利用list维护每一层的节点。 不断地循环当前层的左右节点来获取下一层节点。
/**
* Definition for binary tree
* 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<TreeNode> tmp = new ArrayList<TreeNode>();
List<Integer> tmpNum = new ArrayList<Integer>();
List<List<Integer>> res = new ArrayList<List<Integer>>();
if(root==null)
{
return res;
}
tmp.add(root);
tmpNum.add(root.val);
res.add(tmpNum);
while(!tmp.isEmpty())
{
List<TreeNode> nextLevel = new ArrayList<TreeNode>();
List<Integer> nextNum = new ArrayList<Integer>();
for( TreeNode t:tmp )
{
if( t.left!=null )
{
nextLevel.add(t.left);
nextNum.add(t.left.val);
}
if( t.right!=null )
{
nextLevel.add(t.right);
nextNum.add(t.right.val);
}
}
if(!nextNum.isEmpty())
{
res.add(nextNum);
}
tmp = nextLevel;
}
return res;
}
}