31.不分行从上往下打印二叉树
从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
数据范围:
树中节点的数量 [0,1000]。
样例:
输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null]
输出:[8, 12, 2, 6, 4]
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<Integer> printFromTopToBottom(TreeNode root) {
//创建结果列表,用于存储按层序遍历顺序的节点值
List<Integer>res = new ArrayList<>();
//如果根节点为空,直接返回空列表
if(root == null)return res;
//使用队列辅助进行二叉树的层序遍历
Queue<TreeNode>q = new LinkedList<>();
//将根节点加入队列
q.add(root);
//当队列不为空时,继续处理
while(!q.isEmpty()){
//取出队列头部节点(当前要处理的节点)
TreeNode t = q.remove();
//将当前节点的值加入结果列表
res.add(t.val);
//如果当前节点有左子节点,将左子节点加入队列
if(t.left!=null)q.add(t.left);
//如果当前节点有右子节点,将右子节点加入队列
if(t.right!=null)q.add(t.right);
}
//返回层序遍历顺序的节点值列表
return res;
}
}


浙公网安备 33010602011771号