题目描述:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
3<br /> / \<br /> 9 20<br /> / \<br /> 15 7<br />返回它的最大深度 3 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof
知识点:
- 深度优先遍历
解题思路:
- 我们通过传入变量的方式来记录二叉树的深度,在每次递归的时候让深度加一,当当前节点无左节点与右节点时说明二叉树走到了尽头,判断当前深度是否为最深的
解题代码:
function TreeDepth(pRoot)
{
// write code here
if(!pRoot) return 0;
let max = 0;
const dfs = (node,deep) => {
if(!node.left && !node.right) {
max = Math.max(max,deep);
}
if(node.left) dfs(node.left,deep+1);
if(node.right) dfs(node.right,deep+1);
}
// 注意这道题不像打印二叉树的题,统计深度我们需要从1层开始
// 可以发现不存在是第0层
dfs(pRoot,1);
return max;
}