检查二叉树是不是平衡[关闭]

Posted

技术标签:

【中文标题】检查二叉树是不是平衡[关闭]【英文标题】:Check If Binary Tree Is Balanced [closed]检查二叉树是否平衡[关闭] 【发布时间】:2021-09-24 08:06:54 【问题描述】:

这是我的错误答案。我还在对递归感到困惑,为什么我不能把true和false放在一起,而不是把true放在开头?

public class Solution 
  public boolean isBalanced(TreeNode root)     
    int left = findHeight(root.left);
    int right = findHeight(root.right);
    if (Math.abs(left-right) <= 1) 
      return true;
     else 
      return false;
     
    return (isBalanced(root.left)&&isBalanced(root.right));

  
  private int findHeight(TreeNode root)   
    if (root == null) 
      return 0;
    
    return Math.max(findHeight(root.left), findHeight(root.right)) + 1;
  

这是正确的答案。

public boolean isBalanced(TreeNode root) 
    if (root==null) 
      return true;
    
    int leftHeight = findHeight(root.left);
    int rightHeight = findHeight(root.right);
    if(Math.abs(leftHeight-rightHeight)>1) 
      return false;
     
    return isBalanced(root.left)&&isBalanced(root.right);
  

【问题讨论】:

return (isBalanced(root.left)&amp;&amp;isBalanced(root.right)); 将永远没有机会执行 【参考方案1】:

if (Math.abs(left-right) &lt;= 1) return true; else return false; 将始终为return 某事,这意味着您将永远无法进行递归调用。

【讨论】:

以上是关于检查二叉树是不是平衡[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

什么是平衡二叉树

算法题(二叉树):平衡二叉树

#yyds干货盘点# 解决剑指offer: 判断是不是平衡二叉树

检查二叉树是否平衡

二叉树

#yyds干货盘点# 面试必刷TOP101:判断是不是平衡二叉树