题目:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
思路:
最简单的做法就是递归,只需要将跳出条件考虑正确即可。如果该结点存在,那么该结点的高度就是左右子树高度最大的加1。
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(pRoot == NULL)
return 0;
if(pRoot->left==NULL && pRoot->right==NULL)
return 1;
return (TreeDepth(pRoot->left) > TreeDepth(pRoot->right))?(TreeDepth(pRoot->left)+1):(TreeDepth(pRoot->right)+1);
}
};
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(pRoot == NULL)
return 0;
return max(TreeDepth(pRoot->left)+1, TreeDepth(pRoot->right)+1);
}
};