从上往下打印二叉树

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

题解

不像前、中、后序遍历,它要求一层一层地遍历

利用一个辅助队列,弹出父节点的同时,将它的左右孩子加入队列

时间复杂度: O(N)- 空间复杂度: O(N)

public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
    ArrayList<Integer> res = new ArrayList<>();
    if (root == null)
        return res;

    Deque<TreeNode> deque = new LinkedList<>();
    deque.add(root);
    while (!deque.isEmpty()){
        TreeNode node = deque.pop();
        res.add(node.val);

        if (node.left != null)
            deque.add(node.left);
        if (node.right != null)
            deque.add(node.right);
    }
    return res;
}
全部评论

相关推荐

夏目LTH:这个真的很看运气,多投吧。我从去年十二月底一直投到现在,之前没一个offer,结果两周前投的一家面试官聊的特别好,直接速通offer还给的SP待遇开的比我期望都够。
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务