win*_*ere 5 javascript binary-tree breadth-first-search multidimensional-array
这是一个leetcode问题。
给定一棵二叉树,返回其节点值的层序遍历。(即从左到右,逐级)。
例如:给定二叉树
[3, 9, 20, null, null, 15, 7],Run Code Online (Sandbox Code Playgroud)3 / \ 9 20 / \ 15 7返回其层序遍历为:
Run Code Online (Sandbox Code Playgroud)[ [3], [9,20], [15,7] ]
但我正在 JavaScript 中尝试一种新的方式,而不是完全按照他们的解决方案。到目前为止,我能够打印数组,但是
如何在新行中打印不同的级别
以下是我到目前为止的代码:
var levelOrder = function(root) {
let output = [];
let queue = [];
let currentNode = root;
queue.push(currentNode);
let currentLevel = 1;
while(queue.length){
currentNode = queue.shift();
currentLevel--; //this will ensure we are adding new lines only on next level
output.push(currentNode);
if(currentNode.left){
queue.push(currentNode.left);
}
if(currentNode.right){
queue.push(currentNode.right);
}
if(currentLevel = 0){
output = output + '/n'; //Insert a new line
currentLevel = queue.length; //2
}
}
return output;
};
Run Code Online (Sandbox Code Playgroud)
输入:[3,9,20,null,null,15,7],
Expected Output:
[
[3],
[9,20],
[15,7]
]
Run Code Online (Sandbox Code Playgroud)
本文给出了问题的链接: BinaryTreeTraversalUsingBFS
我想你已经快到了。但不确定output = output + '/n';是做什么用的。
这会通过:
var levelOrder = function(root) {
const levels = []
if(!root) {
return levels
}
const queue = [root]
while (queue.length){
const queueLength = queue.length
const level = []
for(let i = 0; i < queueLength; i++){
const node = queue.shift()
if(node.left){
queue.push(node.left)
}
if(node.right){
queue.push(node.right)
}
level.push(node.val)
}
levels.push(level)
}
return levels
}
Run Code Online (Sandbox Code Playgroud)