判断平衡二叉树

问题:输入一棵二叉树,判断该二叉树是否是平衡二叉树。

首先,什么是平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

先求出左右两个子树的深度,若他们的深度差的绝对值>1,则不是平衡二叉树,还有一点最重要的是性质中说了左右两个子树都是一棵平衡二叉树,所以还要判断

IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right)

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
           if(root==null){
                return true;
            }
            if(Math.abs(TreeDepath(root.left)-TreeDepath(root.right))>1)
            return false;
            return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);

        }
       //求二叉树的深度
        public int TreeDepath(TreeNode pRoot){
            if(pRoot==null)
                return 0;
            if(TreeDepath(pRoot.left)>=TreeDepath(pRoot.right)){
                return 1+TreeDepath(pRoot.left);
            }else{
                return 1+TreeDepath(pRoot.right);
            }
        }
}
时间: 2024-10-18 20:59:10

判断平衡二叉树的相关文章

【Tree】判断平衡二叉树AVL

1 /*********************************** 2 https://leetcode.com/problems/balanced-binary-tree/ 3 @date 2015.5.8 4 @description 5 给定一个二叉树,判断是否是平衡二叉树 6 @tags tree, DFS 7 8 平衡二叉树满足的条件: 9 1.左右子树的高度差不大于1 10 2.左右子树均是平衡二叉树 11 12 本次解决方案提供了两种方法: 13 Solution1. 1

Balanced Binary Tree 判断平衡二叉树

Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1. Hide Tags Tree Depth-first Search /

LeetCode——Balanced Binary Tree(判断是否平衡二叉树)

问题: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1. 分析: 判断平衡二叉树,第一想法肯定是求出左右子树的深度,看是

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

题目 平衡二叉树的性质为:要么是一颗空树,要么任何一个节点的左右子树高度差的绝对值不超过1.给定一棵二叉树的头结点head,判断这棵二叉树是否为平衡二叉树. 难度:?? 基础理解 以下是个人认为对概念叙述较为详细的参考链接: 对平衡二叉树的理解:判断二叉树是否为平衡二叉树 对先序.中序.后序遍历的理解:二叉树的实现及先序.中序.后序遍历 设计 概要设计 设计一个初始树节点模型 接收节点变量并判断是否为平衡二叉树的方法 如何判断是否为平衡二叉树 包含对左右各分支节点的计数器,并以此相减,是否满足绝

判断一颗二叉树是否为二叉平衡树 python 代码

输入一颗二叉树,判断这棵树是否为二叉平衡树.首先来看一下二叉平衡树的概念:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树.因此判断一颗二叉平衡树的关键在于求出左右子树的高度差,而二叉树的高度又是怎么定义的呢?二叉树的高度指的是从根节点到叶子节点所有路径上包含节点个数的最大值.所以我们可以得出,父亲节点的高度与左右子树高度的关系为:父亲节点的高度=max(左子树高度,右子树高度)+1,同时我们知道,叶子节点的高度值为1(或则0,这里定义1或者0对判断结

【Leetcode】【Easy】Balanced Binary Tree

Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1. 错误的思路(o(N2)时间复杂度): 写一个函数a,用递归遍历的方法,

我要好offer之 二叉树大总结

一. 二叉树定义:二叉树具有天然的递归特性,凡是二叉树相关题,首先应该联想到递归 struct BinTreeNode { BinTreeNode* left; BinTreeNode* right; int val; BinTreeNode(int value) : left(nullptr), right(nullptr), val(value) { } }; 二. 二叉树遍历 详见笔者博文:二叉树遍历大总结 1 #include <iostream> 2 #include <vec

Python常用算法

本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可以用空间复杂度与时间复杂度来衡量. 一个算法应该具有以下七个重要的特征: ①有穷性(Fin

《剑指offer》面试题39 二叉树的深度(java)

摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就想看看有什么高大上的改造,毕竟要传递多个参数,是不是会涉及到那么一点点设计模式呢?),简直不能忍了,我只能用一句话形容:"一本正经的胡说八道",不过我就是喜欢看你胡说八道还迷之自信的样子. 下面吐槽一下这个版本的java代码: 1 //高效率的判断是否是一棵平衡二叉树 2 public b