zoukankan      html  css  js  c++  java
  • 剑指 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)); } }



  • 相关阅读:
    jumpserver部署0.3版本 =====( ̄▽ ̄*)b
    zabbix监控服务
    jumpserver部署1.0版本
    yum安装nginx服务
    linux 最大文件打开数
    编译安装nginx
    ubuntu14.04安装mysql5.6.37
    Linux 报错:syntax error "C" 解决办法(此处选择bash系统)
    在配色这件事情上,总会有一些有趣且有用的小技巧
    黑历史!粉红色背后的文化现象和心理博弈
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7257592.html
Copyright © 2011-2022 走看看