剑指 offer代码解析——面试题39推断平衡二叉树
题目:输入一颗二叉树的根结点。推断该树是不是平衡二叉树。
假设某二叉树中随意结点的左右子树的高度相差不超过1,那么它就是一棵平衡二叉树。
分析:所谓平衡二叉树就是要确保每一个结点的左子树与右子树的高度差在-1到1之间。
因为之前一题已经给出了二叉树高度的计算方法,因此本题最直观的思路就是分别计算每一个结点的左子树高和右子树高,从而推断一棵树的全部结点是否均为平衡二叉树。
/**
* 题目:输入一颗二叉树的根结点。推断该树是不是平衡二叉树。 * 假设某二叉树中随意结点的左右子树的高度相差不超过1,那么它就是一棵平衡二叉树。
* @author 大闲人柴毛毛
* @date 2016年4月2日
*/
public class BalanceTree {
/**
* 分析:所谓平衡二叉树就是要确保每一个结点的左子树与右子树的高度差在-1到1之间。
* 因为之前一题已经给出了二叉树高度的计算方法。因此本题最直观的思路就是分别计算每一个结点的左子树高和右子树高,从而推断一棵树的全部结点是否均为平衡二叉树。
* 代码例如以下:
*/ public static <T> boolean isBalanceTree_1(Node<T> root){
//健壮性推断:若树为空
if(root==null){
System.out.println("树为空! ");
return true;
} // 计算左子树高
int left_height = TreeHeight.getTreeHeight(root.left);
// 计算右子树高
int right_height = TreeHeight.getTreeHeight(root.right);
// 计算高度差
int mid = left_height - right_height;
// 推断高度差是否为-1、0、1
if (mid == -1 || mid == 0 || mid == 1)
// 若当前结点是平衡二叉树。则计算左子树和右子树是否为平衡二叉树
return (isBalanceTree_1(root.left) && isBalanceTree_1(root.right));
// 若当前结点不是二叉平衡树,则返回false
else
return false;
} /**
* 測试
*/
public static void main(String[] args){
//构造一棵平衡二叉树
Node<Integer> node1 = new Node<Integer>();
Node<Integer> node2 = new Node<Integer>();
Node<Integer> node3 = new Node<Integer>();
Node<Integer> node4 = new Node<Integer>();
Node<Integer> node5 = new Node<Integer>();
Node<Integer> node6 = new Node<Integer>();
Node<Integer> node7 = new Node<Integer>();
Node<Integer> node8 = new Node<Integer>();
Node<Integer> node9 = new Node<Integer>(); node1.data = 1;
node2.data = 2;
node3.data = 3;
node4.data = 4;
node5.data = 5;
node6.data = 6;
node7.data = 7;
node8.data = 8;
node9.data = 9; node1.left = node2;
node1.right = node3;
node2.left = node4;
node2.right = node5;
node5.left = node7;
node3.right = node6;
// node7.left = node8;
// node8.left = node9; System.out.println(isBalanceTree_1(node1));
}
}
剑指 offer代码解析——面试题39推断平衡二叉树的更多相关文章
- 剑指Offer——乐视笔试题+知识点总结
剑指Offer--乐视笔试题+知识点总结 情景回顾 时间:2016.9.19 15:10-17:10 地点:山东省网络环境智能计算技术重点实验室 事件:乐视笔试 总体来说,乐视笔试内容体量不算少, ...
- 剑指Offer——携程笔试题+知识点总结
剑指Offer--携程笔试题+知识点总结 情景回顾 时间:2016.9.17 19:10-21:10 地点:山东省网络环境智能计算技术重点实验室 事件:携程笔试 总体来说,携程笔试内容与其它企业笔试题 ...
- 剑指Offer——京东实习笔试题汇总
剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...
- 剑指Offer——顺丰笔试题+知识点总结
剑指Offer--顺丰笔试题+知识点总结 情景回顾 时间:2016.10.16 19:00-20:40 地点:山东省网络环境智能计算技术重点实验室 事件:顺丰笔试 知识点总结 快排 霍尔排序(快排) ...
- 剑指Offer——京东校招笔试题+知识点总结
剑指Offer--京东校招笔试题+知识点总结 笔试感言 经过一系列的笔试,发觉自己的基础知识还是比较薄弱的,尤其是数据结构和网络,还有操作系统.工作量还是很大的.做到精确制导的好方法就是在网上刷题,包 ...
- 剑指Offer——CVTE校招笔试题+知识点总结(Java岗)
剑指Offer(Java岗)--CVTE校招笔试题+知识点总结 2016.9.3 19:00参加CVTE笔试,笔试内容如下: 需要掌握的知识:Linux基本命令.网络协议.数据库.数据结构. 选择题 ...
- 《剑指Offer》各面试题总结
目录 前言 面试题4 二维数组的查找 面试题5:替换空格 面试题6:从尾到头打印链表 面试题7:重建二叉树 面试题8:二叉树的下一个节点 面试题9:用两个栈实现队列 面试题10:斐波那契数列 面试题1 ...
- 剑指offer代码 vs2013执行
方法: 代码文件夹名称为:CodingInterviewChinese2-master 1. 用vs2013加载解决方案 .sln文件 2. 一个解决方案下面有多个项目,通过右键解决方案->属性 ...
- 【剑指Offer面试题】九度OJ1384:二维数组中的查找
下决心AC全部剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> ...
随机推荐
- JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 线上Mysql数据库崩溃事故的原因和处理
前文提要 承接前文<一次线上Mysql数据库崩溃事故的记录>,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑. 由于时间原因,其中只讲了当时的一些经 ...
- 逆向知识第八讲,if语句在汇编中表达的方式
逆向知识第八讲,if语句在汇编中表达的方式 一丶if else的最简单情况还原(无分支情况) 高级代码: #include "stdafx.h" int main(int argc ...
- TextView SpannableString 使用之实现可点击超链接效果
TextView SpannableString 使用之实现可点击超链接效果 如果看到这里说明你对 TextView 已经有了一定的了解,至少已经使用过该控件显示文字过.现在来实现一些复杂一点的效果. ...
- [转载] 谷歌技术"三宝"之谷歌文件系统
转载自http://blog.csdn.net/opennaive/article/details/7483523 题记:初学分布式文件系统,写篇博客加深点印象.GFS的特点是使用一堆廉价的商用计算机 ...
- shell 备份脚本
[root@izwz9hmoz58gvtu0ldpm0iz ~]# cat /usr/local/aaaa/shell_script/Mysql_Dump_LJY.sh #! /bin/bash to ...
- 《Metasploit魔鬼训练营》虚拟环境搭建中网络配置的一些问题
直接使用网上下载与书本配套的虚拟机环境,发现NAT服务器10.10.10.254(192.168.10.254)虽然可以和其他虚拟机ping通,但是连不上网.自然windows xp靶机也连不上网了. ...
- php 的开发工具
通过上篇我们已经配置好了php的开发环境,我们就可以在这个模拟的环境下运行我们编写的php代码了. 在编写代码前,先安装一个自己喜欢的代码编辑器. 1.sublime text Sublime Tex ...
- Tarjan算法:求解图的割点与桥(割边)
简介: 割边和割点的定义仅限于无向图中.我们可以通过定义以蛮力方式求解出无向图的所有割点和割边,但这样的求解方式效率低.Tarjan提出了一种快速求解的方式,通过一次DFS就求解出图中所有的割点和割边 ...
- Apache服务器配置
之前做代码一直按照传统化的方法部署别人的网站,但是一直不成功,尝试了很多次最后才发现时虚拟主机的问题 使用apache默认为127.0.0.1和网站的配置发生冲突. 因此在apache的conf文件夹 ...