Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
分析: 使用层次遍历,递归时设置参数le,表明当前结点属于第几层,然后将其加入第几个list中既可;
<span style="font-size:14px;"><span style="font-size:14px;">/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> ans=new ArrayList<List<Integer>>();
if(root==null)
return ans;
level(root,1,ans);
return ans;
}
public void level(TreeNode root,int le,List<List<Integer>> ans){
if(root==null)
return;
if(ans.size()<le){
List<Integer> list=new ArrayList<Integer>();
list.add(root.val);
ans.add(list);
}
else
ans.get(le-1).add(root.val);
level(root.left,le+1,ans);
level(root.right,le+1,ans);
}
}</span></span>
107. Binary Tree Level Order Traversal II
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3] ]
思路: 在上题基础上, 设置一个全局变量max,用于记录当前搜索最深深度,然后属于level层的节点应该存放在max-level个list中。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
int max=0;
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> ans=new ArrayList<List<Integer>>();
levelHelp(ans,root,1);
return ans;
}
public void levelHelp(List<List<Integer>> ans,TreeNode root,int level){
if(root==null)
return;
if(level>ans.size()){
List<Integer> list=new ArrayList<Integer>();
list.add(root.val);
ans.add(0,list);
max=ans.size();
}else{
ans.get(max-level).add(root.val);
}
levelHelp(ans,root.left,level+1);
levelHelp(ans,root.right,level+1);
}
}