判断二叉树深度
int TreeDepth(TreeNode* pRoot)
{
if (pRoot==NULL)
return 0;
int left= TreeDepth(pRoot->left);
int right= TreeDepth(pRoot->right);
return (left>right) ? (left+1) : (right+1);
}
判断平衡二叉树 (任意节点的左右子树深度相差不超过1 ;那么是)
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {//相差1 或者0
if(pRoot==NULL)
return true;
//遍历当前节点深度
int left= TreeDepth(pRoot->left);//左子树深度
int right = TreeDepth(pRoot->right);//左子树深度
if(left-right>1||left-right<-1)
{
return false;
}
return IsBalanced_Solution( pRoot->left)&&IsBalanced_Solution( pRoot->right);
}
int TreeDepth(TreeNode* pRoot)
{
if (pRoot==NULL)
return 0;
int left= TreeDepth(pRoot->left);
int right= TreeDepth(pRoot->right);
return (left>right) ? (left+1) : (right+1);
}
};