给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
普通解法:我们可以给定一个栈,采用层序遍历,每遍历一次把当前层的结点入栈, 下一次遍历更新栈为下一层结点,直到栈空,最后统计最大层数就是二叉树的深度。
function maxNode(root) {
if(!root){return 0}
let num = 1;
let stack = []
let arr = []
arr.push(root)
while(arr.length > 0){
for (let i=0;i<arr.length;i++){
if(arr[i].left){
stack.push(arr[i].left)
}
if(arr[i].right){
stack.push(arr[i].right)
}
}
if(stack.length > 0){
num++;
}
arr = stack;
stack = [];
}
return num;
}
动态规划(递归):
一棵二叉树的深度可以分解为其左右子树的深度的最大值+1,典型的动态规划问题。看到代码简单死了。
function maxNode(root) {
if(!root){return 0}
if(root){
let val1 = maxNode(root.left);
let val2 = maxNode(root.right);
return Math.max(val1,val2)+1;
}
}