Java实现二叉树自底向上的层序遍历
例如,给定二叉树 [3,9,20,null,null,15,7],
返回结果
二叉树结构
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
实现方法(层次遍历)队列
while(size>0)循环意思为将该层遍历完,出队列,装入list中
private static List<List<Integer>> levelOrderBottom(TreeNode root) {
LinkedList<List<Integer>> res = new LinkedList<>();
if (root == null)
return res;
TreeNode p = root;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(p);
while (!queue.isEmpty()) {
int size = queue.size();
List<Integer> temp = new LinkedList<Integer>();
while (size > 0) {
p = queue.poll();
temp.add(p.val);
if (p.left != null) queue.offer(p.left);
if (p.right != null) queue.offer(p.right);
size--;
}
res.addFirst(temp);
}
return res;
}