数据结构

层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树: [3,9,20,null,null,15,7],

1
2
3
4
5
6
7
8
9
10
11
12
    3
/
9 20
/
15 7
返回其层次遍历结果:

[
[3],
[9,20],
[15,7]
]

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 List<List<Integer>> result=new ArrayList();
public List<List<Integer>> levelOrder(TreeNode root) {
if(root==null)return result;

Queue<TreeNode> q= new LinkedList();
q.add(root);
while(!q.isEmpty())
{
int count = q.size();
List<Integer> list = new ArrayList();
while(count>0)
{
TreeNode temp =q.peek();
q.poll();
list.add(temp.val);
if(temp.left!=null)q.add(temp.left);
if(temp.right!=null)q.add(temp.right);
count--;
}
result.add(list);
}
return result;
}

TreeNode

1
2
3
4
5
6
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

1
two sum