剑指Offer——平衡二叉树
题目描述:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
分析:
平衡二叉树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树,同时,平衡二叉树必定是二叉搜索树,反之则不一定。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。
根据定义两个子树的高度差的绝对值不超过1,那么可以通过递归求出左右子树的高度,计算它们的高度差,如果有高度差超过1,那么该树就不是平衡二叉树。
代码:
 class Solution {
 public:
     int isBalanced = true;
     bool IsBalanced_Solution(TreeNode* pRoot) {
         TreeDepth(pRoot);
         return isBalanced;
     }
     int TreeDepth(TreeNode* pRoot) {
         if(pRoot == NULL) return ;
         int leftTreeDepth = TreeDepth(pRoot->left);
         int rightTreeDepth = TreeDepth(pRoot->right);
         if(abs(leftTreeDepth - rightTreeDepth) > )
             isBalanced = false;
         return max(leftTreeDepth + , rightTreeDepth + );
     }
 };
剑指Offer——平衡二叉树的更多相关文章
- 用java刷剑指offer(平衡二叉树)
		题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 牛客网链接 java代码 import java.lang.Math; public class Solution { public bool ... 
- C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
		剑指offer 面试题39:判断平衡二叉树 提交网址: http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ... 
- 【Java】 剑指offer(55-2) 平衡二叉树
		本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一棵二叉树的根结点,判断该树是不是平衡二叉树.如果某二叉树 ... 
- 《剑指offer(第二版)》面试题55——判断是否为平衡二叉树
		一.题目大意 输入一颗二叉树,判断该二叉树是否为平衡二叉树(AVL树). 二.题解 <剑指offer>上给出了两种解决方式: 1.第一种是从根节点开始,从上往下遍历每个子节点并计算以子节点 ... 
- Go语言实现:【剑指offer】平衡二叉树
		该题目来源于牛客网<剑指offer>专题. 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. ... 
- 剑指 Offer 55 - II. 平衡二叉树 + 平衡二叉树(AVL)的判断
		剑指 Offer 55 - II. 平衡二叉树 Offer_55_2 题目描述 方法一:使用后序遍历+边遍历边判断 package com.walegarrett.offer; /** * @Auth ... 
- 力扣 - 剑指 Offer 55 - II. 平衡二叉树
		题目 剑指 Offer 55 - II. 平衡二叉树 思路1(后序遍历+剪枝) 这题是上一题剑指 Offer 55 - I. 二叉树的深度的进阶,逻辑代码和那个一样,也是后续遍历,获取两个子节点较大的 ... 
- 《剑指offer》平衡二叉树
		本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结: 
- 剑指 Offer 题目汇总索引
		剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格 ... 
随机推荐
- DelphiXE8FMX工程实现无边框托动(FMX内部方法)
			注意: 可以实现效果,但不知道我的用法对不对(或着说是不是最优化的用法),望高手们指教. 实例代码: unit Unit1; interface uses System.SysUtils, Syste ... 
- 基于 jQuery支持移动触摸设备的Lightbox插件
			Swipebox是一款支持桌面.移动触摸手机和平板电脑的jquery Lightbox插件.该lightbox插件支持手机的触摸手势,支持桌面电脑的键盘导航,并且支持视频的播放. 在线预览 源码下 ... 
- (译).NET4.X并行任务Task需要释放吗?
			摘要:本博文解释在.NET 4.X中的Task使用完后为什么不应该调用Dispose().并且说明.NET4.5对.NET4.0的Task对象进行的部分改进:减轻Task对WaitHandle对象的依 ... 
- linphone 调试信息
			root@phyCORE-AM335x:~ linphonec -V -d 6INFO: no logfile, logging to stdoutortp-message-oRTP-0.20.0 i ... 
- centos7  /etc/rc.local需要chmod +x /etc/rc.d/rc.local
			Centos 7.0设置/etc/rc.local无效问题解决 安装centos7以后按照以往习惯修改rc.local添加开机启动命令,但重启后发现无效,再次重启发现依然如故 检查系统rc.local ... 
- 你不知道的JavaScript学习笔记1——作用域
			处理程序三要素: 引擎:编译与执行过程. 编译器:语法分析与代码生成等. 作用域:收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权 ... 
- java基础知识小小结
			java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ... 
- gsoap 学习 1-由wsdl文件生成h头文件
			开始前先看一下用户向导吧 http://www.cs.fsu.edu/~engelen/soap.html 中左侧点击Documentation 英语水平确实有限,有些内容可能说的不准确,敬请参考向导 ... 
- C#引用传递[转]
			学过C#的人都知道,通过值或通过引用,值类型和引用类型都可以作为方法参数传递.在C#中,不管是值类型或者是引用类型,所有方法参数在默认情况下是通过值传递的. 1)通过值传递值类型 在通过值传递作为方法 ... 
- 修改Android 界面颜色
			btnGetCode.setTextColor(getResources().getColor(R.color.dark_white)); Color.parseColor("#1a71d4 ... 
