题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
leetcode对应题目:104. 二叉树的最大深度 题目解答
总结:题目一看就是求一个最优解,然后二叉树这种大多用深搜,当然求深度就是二叉树的层数,用层次遍历(queue)实现也可以。
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(!pRoot) return 0;
int pathSum = 0;
dfs(pRoot,0,pathSum);
return pathSum;
}
void dfs(TreeNode* pRoot,int val,int& longest_path){
if(!pRoot) return ;
val += 1;
if(val > longest_path)
longest_path = val;
dfs(pRoot->left,val,longest_path);
dfs(pRoot->right,val,longest_path);
val -= 1;
}
};