31.不分行从上往下打印二叉树

从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。

数据范围:

树中节点的数量 [0,1000]。

样例:

输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null]
image
输出:[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;
    }
}
posted @ 2025-05-22 10:21  回忆、少年  阅读(6)  评论(0)    收藏  举报