题解 | #判断是不是平衡二叉树#

判断是不是平衡二叉树

https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

是平衡二叉树要满足两个条件:节点为空或者左右子树都为平衡二叉树(左右子树高度差不大于1).那么设计递归边界的时候,就可以从这两方面考虑:只要节点为空,一定是平衡的;只要左右子树高度差大于1,一定不是平衡的。要写一个求高度的函数。
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

/**
 * 
 * @param pRoot TreeNode类 
 * @return bool布尔型
 */
int height(struct TreeNode *pRoot){
    if(!pRoot)return 0;
    int left = height(pRoot -> left);
    int right = height(pRoot -> right);
    return left > right ? (left + 1) : (right + 1);
}

bool IsBalanced_Solution(struct TreeNode* pRoot ) {
    
    if(!pRoot)return true;
    int left = height(pRoot -> left);
    int right = height(pRoot -> right);
    if(abs(left - right) > 1)return false;
    return  IsBalanced_Solution(pRoot -> left) && IsBalanced_Solution(pRoot -> right);
    

}

全部评论

相关推荐

05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务