javascript - 按级别顺序遍历时打印不平衡二叉树的空同级

标签 javascript binary-tree breadth-first-search

也许是重复或奇怪的问题,但我无法在任何地方找到答案:

我想以广度优先搜索顺序打印出具有空兄弟的不平衡二叉树的路径。我的代码可以工作,并且我尝试改进它,但我有点卡住了。我只是想知道是否有更聪明的方法来代替多次检查。

function traverse(tree) {
    const path = [];
    let queue = [tree];
    while (queue.length > 0) {
        const current = queue.shift();

        if (current !== null) path.push(current.val);
        else {
            path.push(null);
            continue;
        }

        if (current.left === null && current.right === null) continue;
        else if (current.left !== null && current.right === null) {
            queue.push(current.left);
            queue.push(null);
        }
        else if (current.left === null && current.right !== null) {
            queue.push(null);
            queue.push(current.right);
        }
        else {
            queue.push(current.left);
            queue.push(current.right);
        }
    }
    return path;
}

最佳答案

只是不做检查吗?以下代码应该与您正在执行的操作等效:

if (current.left === null && current.right === null)
    continue;
else {
    queue.push(current.left);
    queue.push(current.right);
}

当子级为 null 时,它会推送 null 值,否则推送属性值。

关于javascript - 按级别顺序遍历时打印不平衡二叉树的空同级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61344865/

相关文章:

javascript - 编码问题,无法用 API 元素创建数组,Reactjs

javascript - 使 Meteor 方法调用在客户端同步

c++ - 这个递归函数如何工作?

java - 二叉树变量类型问题

algorithm - 图 - 如何计算从 v1 到 v2 所需的最小 "broken roads"数量?

java - 骑士的最短路径(BFS)

javascript - 如何在具有相同类的 html 元素中单独添加/附加 html 代码?

需要删除 "sentence"前后的 javascript 正则表达式空格

algorithm - 如何确定一个范围内有多少元素在另一个给定范围内?

algorithm - 如何从顶部开始逐层打印二叉树中的数据?