版权声明:转载请注明本文源地址 https://blog.csdn.net/qwe6112071/article/details/71599361
Binary Tree Level Order Traversal
Description
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).
Example
Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
实现思路
通过一个队列维护每一层的节点,在某一层中,一次从队列中取出节点,再将其叶子节点放进下一层队列中,遍历完当前层,再遍历下一层,直到下一层的队列全为空,则结束层次遍历
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: The root of binary tree.
* @return: Level order a list of lists of integer
*/
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
if(root == null){
return ret;
}
LinkedList<TreeNode> list = new LinkedList<>();
list.add(root);
while(!list.isEmpty()){
ArrayList<Integer> oneRet = new ArrayList<>();
List<TreeNode> tempNodes = new ArrayList(list.subList(0, list.size()));
list.clear();
for(TreeNode node : tempNodes){
oneRet.add(node.val);
if(node.left != null){
list.add(node.left);
}
if(node.right != null){
list.add(node.right);
}
}
ret.add(oneRet);
}
return ret;
}
}