层序遍历二叉树

发布于 2022-11-11 18:05:02 字数 1932 浏览 105 评论 0

例如下图所示二叉树:

     1
   /   \
  2    2
 / \   / \
3  4  4   3

输出答案为 [[1],[2,2],[3,4,4,3]]

思路

如果输出的是一个一维数组则可以借助队列,相当于 BFS 的简化版,若是一个二维数组,则每次遍历都维护一个新的层级,遍历完之后将旧的层级添加到答案里,然后新的层级去更新旧的层级

上代码(js)

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    if (!root) {
        return [];
    }

    let lastLayer = [root],
        output = [];
    while (lastLayer.length) {
        let newLayer = [];

        lastLayer.forEach(item => {
            if (item.left) {
                newLayer.push(item.left);
            }
            if (item.right) {
                newLayer.push(item.right);
            }
        });
        output.push(lastLayer.map(item => item.val));
        lastLayer = [...newLayer];
    }
    return output;
};

上代码(python)

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        output = []
        lastLayer = [root]
        while len(lastLayer) != 0:
            newLayer = []
            for node in lastLayer:
                if node.left:
                    newLayer.append(node.left)

                if node.right:
                    newLayer.append(node.right)

            if len(lastLayer) != 0:
                output.append([item.val for item in lastLayer])

            lastLayer = newLayer.copy() 
        return output;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

一场春暖

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文