剑指 offer代码解析——面试题39判断平衡二叉树
来源:互联网 发布:nginx luci 编辑:程序博客网 时间:2024/05/22 04:37
题目:输入一颗二叉树的根结点,判断该树是不是平衡二叉树。
如果某二叉树中任意结点的左右子树的高度相差不超过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、1if (mid == -1 || mid == 0 || mid == 1)// 若当前结点是平衡二叉树,则计算左子树和右子树是否为平衡二叉树return (isBalanceTree_1(root.left) && isBalanceTree_1(root.right));// 若当前结点不是二叉平衡树,则返回falseelsereturn 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));}}
1 0
- 剑指 offer代码解析——面试题39判断平衡二叉树
- 剑指 offer代码解析——面试题39判断平衡二叉树(高效方法)
- 剑指offer 面试题39—二叉树的深度vs平衡二叉树判断
- 剑指offer 面试题39 求二叉树深度|判断是否为平衡二叉树
- 剑指offer面试题39:二叉树深度以及判断平衡二叉树
- 《剑指Offer》面试题:平衡二叉树
- 剑指 offer代码解析——面试题39二叉树的深度
- 剑指offer面试题 39 二叉树的深度和判断是不是平衡树
- 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
- 剑指Offer----面试题39(2):判断是否为平衡二叉树
- 剑指Offer系列-面试题39-2:判断一棵树是否为平衡二叉树
- 【剑指Offer】:面试题39:平衡二叉树
- 剑指offer面试题之判断一颗二叉树是不是平衡二叉树
- 面试题39:平衡二叉树判断
- 【面试题】剑指Offer-39-求二叉树的深度和判断一颗树是否为平衡二叉树
- 剑指offer代码解析——面试题19二叉树的镜像
- 剑指offer代码解析——面试题23从上往下打印二叉树
- 剑指Offer面试题39二叉树的深度(以及判断平衡二叉树),面试题40数组中只出现一次的数字
- 商业研究(8):汽车交通
- 2016郑州大学ACM/ICPC训练赛 Round4
- 安装xampp时提示找不到文件“-n”,提示没有安装Microsoft Visual C++ 2008 Redistributable Package (x86)
- Could not start GlassFish Server 4.1 occupied by null
- 历年网球大满贯冠军分布(2003-2016)
- 剑指 offer代码解析——面试题39判断平衡二叉树
- 树莓派 搭建web服务器无法解析php网页
- List替换元素
- 获取canvas上下文报错问题
- Win32环境下代码注入与API钩子的实现
- HDU - 1573 X问题 && POJ - 1891 (孙子定理)
- FLAGS register
- 【JQuery】使用hover()方法切换事件
- leetcode---House Robber III