按级别顺序遍历时打印不平衡二叉树的空兄弟
Print null siblings of unbalanced binary tree when traverse in level order
可能是重复或奇怪的问题,但我无法在任何地方找到答案:
我想以广度优先搜索顺序打印出具有 null 兄弟节点的 不平衡二叉树 的路径。我的代码有效,我试图改进它,但我有点卡住了。我只是想知道是否有更聪明的方法来代替多次检查。
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
值,否则推送 属性 值。
可能是重复或奇怪的问题,但我无法在任何地方找到答案:
我想以广度优先搜索顺序打印出具有 null 兄弟节点的 不平衡二叉树 的路径。我的代码有效,我试图改进它,但我有点卡住了。我只是想知道是否有更聪明的方法来代替多次检查。
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
值,否则推送 属性 值。