Leetcode 之Balanced Binary Tree(49)

用递归的方式来做,左右两棵子树的高度差不超过1。分成两部分,一部分递归得到树的高度,一部分递归检查左右子树是否是平衡二叉树。

 

  int getHeight(TreeNode *root)
      {
          if (root == nullptr)return 0;
          return max(getHeight(root->left), getHeight(root->right)) + 1;
      }
      bool isBalancedTree(TreeNode *root)
      {
          if (root == nullptr)return true;
          if (root->left == nullptr && root->right == nullptr)return true;
          if (abs(getHeight(root->left) - getHeight(root->right)) > 1)return false;

          return(isBalancedTree(root->left) && isBalancedTree(root->right));
      }
View Code

 

posted @ 2016-06-01 14:38  牧马人夏峥  阅读(151)  评论(0编辑  收藏  举报