题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
算法:
1、如果树为空,则深度为0
2、如果树不是空,那么深度是左子树的深度+1或右子树的深度+1.
class Solution { public: int TreeDepth(TreeNode* pRoot){ if(pRoot==NULL) return 0; return max(1+TreeDepth(pRoot->left),1+TreeDepth(pRoot->right)); } };
class Solution {
public:
//求树深度函数
int TreeDepth(TreeNode* pRoot){
if(pRoot==NULL)
return 0;
return max(1+TreeDepth(pRoot->left),1+TreeDepth(pRoot->right));
}
//判断左子树深度和右子树深度差是否满足BST条件
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot == NULL)
return true;
int left = TreeDepth(pRoot->left);
int right = TreeDepth(pRoot->right);
if(abs(left-right)>1)
return false;
return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right);
}
};