题目
难度级别:简单
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明:
叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
解题思路
法一
还是使用递归,在root不为null时初始化节点深度num为1,然后调用search方法将left值与right值传入,第三个参数为当前层数。
var maxDepth = function(root) {
if (root === null) return 0
let num = 1
const search = (p, q, n) => {
if (num <= n) num = n
if (p === null && q === null){
return
}
else if (p === null) {
search(q.left, q.right, n+1)
}else if (q === null) {
search(p.left, p.right, n+1)
}else{
search(p.left, p.right, n + 1)
search(q.left, q.right, n + 1)
}
}
search(root.left,root.right, num)
return num
};
法二
还是递归,分别求出左边与右边的深度,在选出其最大值,对当前深度+1。
var maxDepth = function(root) {
if (root === null) return 0
else{
let left = maxDepth(root.left)
let right = maxDepth(root.right)
return Math.max(left,right) + 1
}
};
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree