/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function (root) {
const res = []
if (!root) {
return res
}
const queue = [root]
while (queue.length) {
const size = queue.length
const tmpArr = []
for (let i = 0; i < size; i++) {
const cur = queue.shift()
tmpArr.push(cur.val)
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
res.push(tmpArr)
}
return res
};
107. 二叉树的层序遍历 II - 力扣(LeetCode)
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrderBottom = function (root) {
const res = []
if (!root) {
return res
}
const queue = [root]
while (queue.length) {
const size = queue.length
const tmpArr = []
for (let i = 0; i < size; i++) {
const cur = queue.shift()
tmpArr.push(cur.val)
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
res.push(tmpArr)
}
return res.reverse()
};
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var rightSideView = function (root) {
const res = []
if (!root) {
return res
}
const queue = [root]
while (queue.length) {
const size = queue.length
for (let i = 0; i < size; i++) {
const cur = queue.shift()
if (i === size - 1) {
res.push(cur.val)
}
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
}
return res
};
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var averageOfLevels = function (root) {
const res = []
if (!root) {
return res
}
const queue = [root]
while (queue.length) {
const size = queue.length
let sum = 0
for (let i = 0; i < size; i++) {
const cur = queue.shift()
sum += cur.val
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
res.push(sum / size)
}
return res
};
515. 在每个树行中找最大值 - 力扣(LeetCode)
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var largestValues = function (root) {
const res = []
if (!root) {
return res
}
const queue = [root]
while (queue.length) {
const size = queue.length
let tmpMax = -Infinity
for (let i = 0; i < size; i++) {
const cur = queue.shift()
if (cur.val > tmpMax) {
tmpMax = cur.val
}
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
res.push(tmpMax)
}
return res
};
116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode)
117. 填充每个节点的下一个右侧节点指针 II - 力扣(LeetCode)
/**
* // Definition for a Node.
* function Node(val, left, right, next) {
* this.val = val === undefined ? null : val;
* this.left = left === undefined ? null : left;
* this.right = right === undefined ? null : right;
* this.next = next === undefined ? null : next;
* };
*/
/**
* @param {Node} root
* @return {Node}
*/
var connect = function (root) {
const nodeArr = []
if (!root) {
return null
}
const queue = [root]
while (queue.length) {
const size = queue.length
const tmpArr = []
for (let i = 0; i < size; i++) {
const cur = queue.shift()
tmpArr.push(cur)
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
nodeArr.push(tmpArr)
}
for (let i = 0; i < nodeArr.length; i++) {
for (let j = 0; j < nodeArr[i].length; j++) {
if (j === nodeArr[i].length - 1) {
nodeArr[i][j].next = null
} else {
nodeArr[i][j].next = nodeArr[i][j + 1]
}
}
}
return root
};
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var maxDepth = function (root) {
let res = 0
if (!root) {
return res
}
const queue = [root]
while (queue.length) {
const size = queue.length
for (let i = 0; i < size; i++) {
const cur = queue.shift()
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
res++
}
return res
};
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var minDepth = function (root) {
let res = 0
if (!root) {
return res
}
const queue = [root]
while (queue.length) {
const size = queue.length
res++
for (let i = 0; i < size; i++) {
const cur = queue.shift()
if (!cur.left && !cur.right) {
return res
}
cur.left && queue.push(cur.left)
cur.right && queue.push(cur.right)
}
}
};