每天一道leetcode-110平衡二叉树

Posted 程序员乔戈里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一道leetcode-110平衡二叉树相关的知识,希望对你有一定的参考价值。

辣条走起,每月的leetcode刷题99元奖励就靠大家啦~

前言

今天的题目
每天的题目见github(看最新的日期):
https://github.com/gzc426

昨天的题解

每天一道leetcode-110平衡二叉树

题目

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

题目详解

思路

  • 使用求树的高度递归的方法,求左子树和右子树的高度,每次在求出左子树和右子树的高度的时候比较一下两者之间的差值

  • 如果差值大于等于2 那么就不是平衡二叉树

代码

  
    
    
  
/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/

class Solution {
   private boolean flag = true;//全局变量
   public boolean isBalanced(TreeNode root) {
       TreeLength(root);
       return flag;
   }
   private int TreeLength(TreeNode root)
   
{
       if(root == null)
           return 0;
       int left = TreeLength(root.left);
       int right = TreeLength(root.right);
       if(left-right >= 2 || right - left >= 2)
       {
           flag = false;//高度差大于2 不是平衡的了
       }
       return left>right?(left+1):(right+1);
   }
}

结束语

以上是关于每天一道leetcode-110平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode #110 平衡二叉树

⭐算法入门⭐《二叉树 - 平衡二叉树》简单01 —— LeetCode 110. 平衡二叉树

leetcode-----110. 平衡二叉树

[LeetCode] 110. 平衡二叉树

LeetCode110. 平衡二叉树

LeetCode 110. 平衡二叉树