作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个leetcode问题。
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:Given binary tree
[3, 9, 20, null, null, 15, 7]
,3
/ \
9 20
/ \
15 7return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
How can different levels be printed in new rows
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;
};
Input: [3,9,20,null,null,15,7],
Expected Output:
[
[3],
[9,20],
[15,7]
]
LeetCode 问题链接:
最佳答案
我想你快到了。不知道是什么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
}
关于javascript - 使用 Javascript 的二叉树级顺序遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62785066/
我是一名优秀的程序员,十分优秀!