10二叉树的最大深度及最长路径问题
思路
最大深度及最长路径的思路很像,
- 最大深度是,判断左右子树的最大深度,最大的那个加上自己就是树的最大深度(那么要知道左右子树的最大深度,还是需要用到后序遍历)
- 最长路径是,判断左右子树的最大深度,左子树的最大深度加上右子树的最大深度就是这颗树的最长路径,然后再用这个最长路径和变量MAX比较,最终返回MAX
代码
最大深度
var maxDepth = function(root) {
if (!root) {
return 0
} else {
let left = maxDepth(root.left);
let right = maxDepth(root.right);
let maxTree = Math.max(left,right);
return maxTree + 1
}
};
最长路径
var res = 0;
var rootLength = function (root) {
if (!root) {
return 0;
} else {
let left = rootLength(root.left);
let right = rootLength(root.right);
let max = left + right;
res = Math.max(max,res );
return Math.max(left,right) + 1;
}
}
}