LeetCode110. 平衡二叉树

打印 上一主题 下一主题

主题 557|帖子 557|积分 1671

平衡二叉树定义:|左子树高度-右子树高度| <= 1
踩坑点:
不能通过根节点的左右子树高度来直接判断是否为平衡二叉树,e.g:假如根节点左子树为左斜树,右子树为右斜树,且两棵子树个数相同,此时根节点左右子树高度相同,但不是平衡二叉树。
因此还是需要一层层地往下判断
  1. class Solution {
  2. public:
  3.     int max(int a, int b)
  4.     {
  5.         return a > b ? a : b;
  6.     }
  7.     int getHeight(TreeNode* root)
  8.     {
  9.         if (root == nullptr) return 0;
  10.         int leftHeight = getHeight(root->left);
  11.         int rightHeight = getHeight(root->right);
  12.         return max(leftHeight, rightHeight) + 1;
  13.     }
  14.     bool isBalanced(TreeNode* root)
  15.     {   
  16.         bool res;
  17.         if (root == nullptr) return true;
  18.         int leftHeight = getHeight(root->left);
  19.         int rightHeight = getHeight(root->right);
  20.         if (abs((leftHeight - rightHeight)) <= 1)
  21.         {
  22.             if(!isBalanced(root->left)) return false;
  23.             if(!isBalanced(root->right)) return false;
  24.             return true;
  25.         }
  26.         else
  27.             return false;
  28.     }
  29. };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表