持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情🚀🚀
104. 二叉树的最大深度 - 力扣(LeetCode)
递归写法
求最大深度,其实也就是求最大高度~ 这里一般用后序遍历去解决此类问题
if(!root)
return root;
const dfs = (node) => {
if(!node){
return 0;
}
let left = dfs(node.left);
let right = dfs(node.right);
let height = Math.max(left,right) + 1;
return height;
}
return dfs(root);
层次遍历写法
if(!root)
return root;
let queue = [];
let count = 0;
queue.push(root)
while(queue.length){
let len = queue.length;
count++;
while(len--){
let top = queue.shift()
if(top.left){
queue.push(top.left)
}
if(top.right){
queue.push(top.right)
}
}
}
return count;
注:这里要用len来记录当前层数,方便对当前层进行处理
559. N 叉树的最大深度 - 力扣(LeetCode)
层次遍历
if(!root){
return root
}
let count = 0;
let queue = [];
queue.push(root);
while(queue.length){
let len = queue.length;
count++;
console.log(count)
while(len--){
let top = queue.shift();
for(let s of top.children){
if(s)
queue.push(s)
}
}
}
return count;
和二叉树的最大深度很类似
111. 二叉树的最小深度 - 力扣(LeetCode)
易错
这题上来直接就按求二叉树的最大深度一样去解。
没想到直接被摆了一道。
因为如果其左子树为空的话,该二叉树的最小深度不为1!!!
而是根节点到最近叶子节点的最短路径上的节点数量。
所以概念还是有些没看懂。
递归
const dfs = (node) => {
if(root === null) return 0;
if(!node.left && node.right){
return height = 1 + dfs(node.right);
}
if(!node.right && node.left){
return height = 1 + dfs(node.left);
}
if(node.left && node.right){
let left = dfs(node.left);
let right = dfs(node.right)
let height = 1 + Math.min(left,right);
return height;
}
if(!node.left && !node.right)
return 1;
}
return dfs(root)
这里需要注意的就是有三种判断情况
222. 完全二叉树的节点个数 - 力扣(LeetCode)
递归
if(!root)
return root;
let count = 0;
const dfs = (node) => {
if(!node)
return 0;
else{
let right = dfs(node.right)
let left = dfs(node.left);
count = right + left + 1 ;
return count;
}
}
return dfs(root);
层次遍历
let queue = [];
if(!root)
return root;
let count = 0;
queue.push(root);
while(queue.length){
let len = queue.length;
while(len--){
let top = queue.shift();
if(top.left){
queue.push(top.left)
}
if(top.right){
queue.push(top.right)
}
count++;
}
}
return count;
什么是完全二叉树
在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^(h-1) 个节点。