每天一道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平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章