题解 | #判断是不是平衡二叉树#
判断是不是平衡二叉树
https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return bool布尔型 */ //求树高 int tree_deep(struct TreeNode* pRoot){ if(pRoot == NULL) return 0; return tree_deep(pRoot->left)>tree_deep(pRoot->right)?tree_deep(pRoot->left)+1:tree_deep(pRoot->right)+1; } //双递归判断是否为平衡二叉 bool IsBalanced_Solution(struct TreeNode* pRoot ) { // write code here if(pRoot == NULL) return true; //左树的高 int left = tree_deep(pRoot->left); //右树的高 int right = tree_deep(pRoot->right); //差在1内 if(left-right>1||left-right<-1) return false; return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right); }