39-2 判断是不是平衡二叉树
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
平衡二叉树 每个结点的左右子树的深度相差不超过1
解法一:采用后序遍历的方式遍历整棵二叉树 只用遍历一次结点
C++:
1 class Solution { 2 private: bool isBalance = true ; 3 public: 4 bool IsBalanced_Solution(TreeNode* root) { 5 height(root) ; 6 return isBalance ; 7 } 8 9 int height(TreeNode* root) { 10 if (root == NULL) 11 return 0 ; 12 int left = height(root->left) ; 13 int right = height(root->right) ; 14 if (abs(left-right) > 1){ 15 isBalance = false ; 16 } 17 return max(left , right) + 1 ; 18 } 19 };