题解 | #判断是不是平衡二叉树#
判断是不是平衡二叉树
https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222
class Solution { public: int high(TreeNode* p) { if (!p) return 0; return max(high(p->left), high(p->right)) + 1; } bool IsBalanced_Solution(TreeNode* pRoot) { if (!pRoot) return 1; if (abs(high(pRoot->right) - high(pRoot->left)) > 1) return 0; if (!IsBalanced_Solution(pRoot->left)) return 0; if (!IsBalanced_Solution(pRoot->right)) return 0; return 1; } };
先写一个求高度的函数
若是有难点,难点在于递归的理解
这是一个自顶向下的方法
1.为空树:符合
2.本级任务:本树平衡,则符合,否则交给下级任务
3.左子树不平衡:不符合
4.右子树不平衡:不符合