题目

二叉树节点间的最大距离问题

java代码

package com.lizhouwei.chapter3;/*** @Description:二叉树节点间的最大距离问题* @Author: lizhouwei* @CreateDate: 2018/4/16 19:33* @Modify by:* @ModifyDate:*/
public class Chapter3_20 {public int maxDistance(Node head) {int[] record = new int[1];return postOrder(head, record);}public int postOrder(Node head, int[] record) {if (head == null) {record[0] = 0;return 0;}int lM = postOrder(head.left, record);//head的左子树中最远的距离int leftMax = record[0];//head的左子树离叶子节点最远的距离int rM = postOrder(head.right, record);//head的右子树中最远的距离int righMax = record[0];//head的右子树离叶子节点最远的距离//head左右子树离叶子节点最远的距离最大的一个,再加上1 就是此节点中里叶子节点最大的距离record[0] = Math.max(leftMax, righMax) + 1;int curMax = leftMax + righMax + 1;//通过head节点的距离return Math.max(Math.max(lM, rM), curMax);}//测试public static void main(String[] args) {Chapter3_20 chapter = new Chapter3_20();int[] arr = {4, 2, 5, 1, 3, 6, 7};Node head = NodeUtil.generTree(arr, 0, arr.length - 1);System.out.print("head二叉树节点间最大距离为:" + chapter.maxDistance(head));}
}

转载于:https://www.cnblogs.com/lizhouwei/p/8858156.html

《程序员代码面试指南》第三章 二叉树问题 二叉树节点间的最大距离问题相关推荐

  1. 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体

    准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...

  2. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...

    题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...

  3. 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表

    样例 树的中序遍历:1 2 3 4 5 6 7 ,转换后双向链表的遍历:1 2 3 4 5 6 7 java代码 /*** @Description:搜索二叉树转换为双向链表* @Author: li ...

  4. 《程序员代码面试指南》第二章 链表问题 反转部分单向链表

    题目 给一个单向链表和开始和结束的位置,将这两位置区间链表进行反转 java代码 /*** @Description:反转部分单向链表* @Author: lizhouwei* @CreateDate ...

  5. 《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈

    题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop.push.getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 ...

  6. 《程序员代码面试指南》第二章 链表问题 删除无序链表中值重复的链表

    样例 998 998 998 999 999 999 1000 1000 1000 删除后为998 999 1000 java代码 /*** @Description:删除无序链表中值重复的链表* @ ...

  7. 《程序员代码面试指南第二版》Python实现(个人读书笔记)

    说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...

  8. 程序员代码面试指南第二版 4.猫狗队列

    welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...

  9. 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档

    前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...

最新文章

  1. iso镜像文件烧写到U盘
  2. Truncate a string
  3. 使用fastDFS客户端改造文件上传
  4. python探测端口_python检测远程服务器tcp端口的方法
  5. php 警告方法 不可用,升级PHP版本后警告信息的逐一解决
  6. Windows+Python3.7下自动生成requirements.txt文件
  7. JavaScript之流程控制
  8. 为什么不能说“接受原假设”?
  9. OpenXml 之 Excel 复制插入行
  10. 数据分析训练营-pandas
  11. qt(qu chu biao ti lan /窗口非暴力置顶)
  12. kali Linux的简单介绍
  13. Python400集大型视频,无偿分享,从正确方向学习python,全套python入门完整视频
  14. openssh-7.5p1升级
  15. Python将word表格存入excel —— 格式化pg参数手册
  16. java火焰纹章攻略女神之剑_火焰纹章晓之女神图文攻略(4)
  17. Maven项目在new module后,pom文件显示为Ignored pom.xml
  18. <MySQL>表中添加和删除字段
  19. Windows Vista 官方中文正式版(MSDN)(转载)
  20. vscode配置并运行swift

热门文章

  1. java工厂模式 uml_深入浅出设计模式-简单工厂模式
  2. JAVA中对象的序列化的作用?
  3. php min命令,php min函数怎么用?
  4. redis 哨兵 异步_突破Java面试(23-8) - Redis哨兵主备切换的数据丢失问题-阿里云开发者社区...
  5. 俄罗斯农民乘法 | 快速乘
  6. redis——Redis中的LRU算法改进
  7. 约瑟夫环-(数组、循环链表、数学)
  8. linux 中阻塞与非阻塞 同步与异步
  9. 华三交换机如何进入配置_学校机房项目交换机的如何配置,理解这篇,交换机配置不再难...
  10. C++ primer三章二节标准库类型string