注意使用一个变量记录每一层的节点数量,使用for循环一次遍历出一层中的所有结点。
public
class Solution {
public List < List < Integer >> levelOrder(TreeNode root) {
Queue <TreeNode> queue = new LinkedList<TreeNode>();
List < List < Integer >> wrapList = new LinkedList< List < Integer >>();
if (root == null ) return wrapList;
queue .offer(root);
while (! queue .isEmpty()){ int levelNum = queue .size();
List < Integer > subList = new LinkedList< Integer >();
for(int i= 0 ; i<levelNum; i++) {
if ( queue .peek().left != null ) queue .offer( queue .peek().left);
if ( queue .peek().right != null ) queue .offer( queue .peek().right);
subList.add( queue .poll().val);
}
wrapList.add(subList);
}
return wrapList;
}
}
public List < List < Integer >> levelOrder(TreeNode root) {
Queue <TreeNode> queue = new LinkedList<TreeNode>();
List < List < Integer >> wrapList = new LinkedList< List < Integer >>();
if (root == null ) return wrapList;
queue .offer(root);
while (! queue .isEmpty()){ int levelNum = queue .size();
List < Integer > subList = new LinkedList< Integer >();
for(int i= 0 ; i<levelNum; i++) {
if ( queue .peek().left != null ) queue .offer( queue .peek().left);
if ( queue .peek().right != null ) queue .offer( queue .peek().right);
subList.add( queue .poll().val);
}
wrapList.add(subList);
}
return wrapList;
}
}