二叉树的深度:递归

判断二叉树是否是平衡二叉树:注意二叉树平衡代表的是所有非叶子节点都是一棵平衡树 – 而不仅仅是根节点

    public class _Q39<T> {public int TreeDepth(BinaryTreeNode<?> tree){if(tree == null) return 0;if(tree.leftChild == null && tree.rightChild == null) return 1;int left = TreeDepth(tree.leftChild);int right = TreeDepth(tree.rightChild);return (left > right ? left : right) + 1;}public boolean IsBalance(BinaryTreeNode<?> tree, int depth[]){if(tree == null) return true;int depthL[] = {0};int depthR[] = {0};// 相当于后序遍历if(IsBalance(tree.leftChild, depthL) && IsBalance(tree.rightChild, depthR)){int diff = depthL[0] - depthR[0];if(diff <= 1 && diff >= -1){depth[0] = (depthL[0] > depthR[0] ? depthL[0] : depthR[0]) + 1;return true;}}return false;} }

测试代码:

public class _Q39Test extends TestCase {_Q39<?> treeJudge = new _Q39();public void test(){BinaryTreeNode<Integer> root = new BinaryTreeNode<>();BinaryTreeNode<Integer> node1 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node2 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node3 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node4 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node5 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node6 = new BinaryTreeNode<>();root.value = 10;node1.value = 6;node2.value = 14;node3.value = 4;node4.value = 8;node5.value = 12;node6.value = 16;root.leftChild = node1;root.rightChild = node2;//root.rightChild = null;node1.leftChild = node3;node1.rightChild = node4;node2.leftChild = node5;node2.rightChild = node6;node3.leftChild = null; node3.rightChild = null;node4.leftChild = null; node4.rightChild = null;node5.leftChild = null; node5.rightChild = null;node6.leftChild = null; node6.rightChild = null;System.out.println(treeJudge.TreeDepth(root));int depth[] = {0};System.out.println(treeJudge.IsBalance(root, depth));}}

【剑指offer-Java版】39二叉树的深度相关推荐

  1. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  2. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  3. 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

    前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...

  4. 剑指offer java版(三)

    二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...

  5. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  6. 剑指offer(C++)-JZ55:二叉树的深度(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的 ...

  7. 剑指Offer第二版Java代码实现

    剑指Offer第二版Java代码实现 A.单例模式 面试题 2:实现Singleton模式 B.面试需要的基础知识 面试题 3:数组中重复的数字 面试题 4:二维数组的查找 面试题 5:替换空格 面试 ...

  8. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  9. 剑指offer——面试题39:二叉树的深度

    剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...

  10. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

最新文章

  1. android通知栏半透明,Android开发实现透明通知栏
  2. python精要(75)-turtle(5)
  3. python课程设计编写电子通讯录_用Python实现简单通讯录
  4. [学习笔记]面向对象VS面向过程
  5. linux系统管理命令使用,Linux系统管理使用之基本命令(1)
  6. navicat mysql server has gone away_Navicat中MySQL server has gone away错误怎么办【转载】
  7. good nice fine well区别
  8. HDU [1529] || POJ [P1275] Cashier Employment
  9. 吹嘘自己,只是想别人从吾这里学点东西
  10. 自动刷新徐小明股市直播内容
  11. java session超时判断_详解SpringBoot中Session超时原理说明
  12. python求三位数每一位的和_输入一个三位数的整数,求这个三位数每一位上数字的和是多少。例如,输入: 382,输出:和为 13。 编写 Python 程序实现上述要求...
  13. Eureka的自我保护机制
  14. 央视315曝光科技企业未击中痛点
  15. 计算圆周率可以根据公式如下:请利用Python提供的itertools模块,我们来计算这个序列的前N项和——python
  16. 【Python】一篇文章学习Pandas包 Pandas Series、DataFrame 对比学习
  17. 法里昂第一大学一座大楼楼顶爆炸起火 致至少3人伤
  18. Rancher学习日记4
  19. 高中OJ3837. 【NOIP2014模拟9.14】心灵终结
  20. 606. 根据二叉树创建字符串C++

热门文章

  1. C++中创建二维数组的几种方法
  2. C和C++中的##和#
  3. gen_caltab自治标定板
  4. sega+model+3+android,世嘉MODEL2经典老游戏移植登场 追加联网对战
  5. SaltStack状态导入(include)
  6. 【Interfacenavigation】XML中的字体(27)
  7. Java基础-Java中的堆内存和离堆内存机制
  8. 使用Intellij IEDA创建hibernate
  9. Hadoop2.7.3完全分布式搭建
  10. meta常用标签总结