199. 二叉树的右视图
var rightSideView = function(root) {
if(!root) return []
const res = [root.val]
const queue = [root]
while(queue.length) {
let len = queue.length
for(let i=0; i<len; i++) {
const node = queue.shift()
node.left && queue.push(node.left)
node.right && queue.push(node.right)
if(i===len-1 && queue.length) {
res.push(queue[queue.length-1].val)
}
}
}
return res
};
637. 二叉树的层平均值
var averageOfLevels = function(root) {
const res = []
const queue = [root]
while(queue.length) {
const len = queue.length
let sum = 0
for(let i = 0; i<len;i++) {
const node = queue.shift()
sum+=node.val
node.left && queue.push(node.left)
node.right && queue.push(node.right)
}
res.push(sum/len)
}
return res
};
102. 二叉树的层序遍历
var levelOrder = function(root) {
if(!root) return []
const res = []
const queue = [root]
while(queue.length) {
let len = queue.length
const curr = []
while(len--) {
const node = queue.shift()
curr.push(node.val)
node.left && queue.push(node.left)
node.right && queue.push(node.right)
}
res.push(curr)
}
return res
};
103. 二叉树的锯齿形层序遍历
var zigzagLevelOrder = function(root) {
if(!root) return []
const res = []
const queue = [root]
while(queue.length) {
let len = queue.length
const isPush = res.length % 2 === 0
const curr = []
while(len--) {
const node = queue.shift()
isPush ? curr.push(node.val) : curr.unshift(node.val)
node.left && queue.push(node.left)
node.right && queue.push(node.right)
}
res.push(curr)
}
return res
};
相关笔记