226. 翻转二叉树
难度简单1112收藏分享切换为英文接收动态反馈
【代码】
/**
* 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 {TreeNode}
*/
var invertTree = function(root) {
if(root === null) return null
let left = invertTree(root.left)
let right = invertTree(root.right)
root.left = right
root.right = left
return root
};
剑指 Offer 32 - II. 从上到下打印二叉树 II
【代码】
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function(root) {
if (!root) return []
const queue = [[root, 0]], res = []
while (queue.length) {
const [node, level] = queue.shift()
// 判断当前层是否已经初始化设置 [] 若无则初始化一下
if (!res[level]) res[level] = []
res[level].push(node.val)
node.left && queue.push([node.left, level + 1])
node.right && queue.push([ node.right, level + 1 ])
}
return res
};
144. 二叉树的前序遍历思路
难度简单708收藏分享切换为英文接收动态反馈
【代码】
/**
* 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 preorderTraversal = function(root) {
let res = []
preorder(root, res)
return res
};
function preorder(root, res){
if(root === null) return
res.push(root.val)
preorder(root.left,res)
preorder(root.right,res)
}
剑指 Offer 54. 二叉搜索树的第k大节点
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @param {number} k
* @return {number}
*/
var kthLargest = function(root, k) {
function dfs(node) {
if(!node) return 0;
const right = dfs(node.right);
if(0 === --k){
return node.val;
}
const left = dfs(node.left);
return right+left
}
return dfs(root);
};
589. N 叉树的前序遍历
【代码】
/**
* // Definition for a Node.
* function Node(val, children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node|null} root
* @return {number[]}
*/
var preorder = function(root) {
let stack = [], res = []
if(root === null) return res
stack.push(root)
while(stack.length){
let node = stack.pop()
res.push(node.val)
node.children.reverse();
stack.push(...node.children)
}
return res
};