代码改变世界

Balanced Binary Tree

2015-04-09 14:14  笨笨的老兔子  阅读(102)  评论(0编辑  收藏  举报

判断一棵二叉树是否是平衡树

看到二叉树的题目,基本都可以用递归的思想求解。对于判断是否是一棵平衡树可分为以下几个步骤:

  1. 计算左子树和右子树的高度差是否大于1,是则返回false
  2. 判断左子树是否是平衡树,判断右子树是否是平衡树
  1. class Solution {
  2. public:
  3. bool isBalanced(TreeNode *root)
  4. {
  5. if (root == NULL)
  6. return true;
  7. else
  8. {
  9. int left = depth(root->left);
  10. int right = depth(root->right);
  11. if (abs(left - right) > 1)
  12. return false;
  13. return isBalanced(root->left) && isBalanced(root->right);
  14. }
  15. }
  16. int depth(TreeNode* root)
  17. {
  18. if (root == NULL)
  19. return 0;
  20. else
  21. return max(depth(root->left), depth(root->right)) + 1;
  22. }
  23. };