《程序员代码面试指南》第三章 二叉树问题 二叉树节点间的最大距离问题
题目
二叉树节点间的最大距离问题
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
《程序员代码面试指南》第三章 二叉树问题 二叉树节点间的最大距离问题相关推荐
- 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体
准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...
题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...
- 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
样例 树的中序遍历:1 2 3 4 5 6 7 ,转换后双向链表的遍历:1 2 3 4 5 6 7 java代码 /*** @Description:搜索二叉树转换为双向链表* @Author: li ...
- 《程序员代码面试指南》第二章 链表问题 反转部分单向链表
题目 给一个单向链表和开始和结束的位置,将这两位置区间链表进行反转 java代码 /*** @Description:反转部分单向链表* @Author: lizhouwei* @CreateDate ...
- 《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈
题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop.push.getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 ...
- 《程序员代码面试指南》第二章 链表问题 删除无序链表中值重复的链表
样例 998 998 998 999 999 999 1000 1000 1000 删除后为998 999 1000 java代码 /*** @Description:删除无序链表中值重复的链表* @ ...
- 《程序员代码面试指南第二版》Python实现(个人读书笔记)
说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...
- 程序员代码面试指南第二版 4.猫狗队列
welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...
- 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档
前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...
最新文章
- iso镜像文件烧写到U盘
- Truncate a string
- 使用fastDFS客户端改造文件上传
- python探测端口_python检测远程服务器tcp端口的方法
- php 警告方法 不可用,升级PHP版本后警告信息的逐一解决
- Windows+Python3.7下自动生成requirements.txt文件
- JavaScript之流程控制
- 为什么不能说“接受原假设”?
- OpenXml 之 Excel 复制插入行
- 数据分析训练营-pandas
- qt(qu chu biao ti lan /窗口非暴力置顶)
- kali Linux的简单介绍
- Python400集大型视频,无偿分享,从正确方向学习python,全套python入门完整视频
- openssh-7.5p1升级
- Python将word表格存入excel —— 格式化pg参数手册
- java火焰纹章攻略女神之剑_火焰纹章晓之女神图文攻略(4)
- Maven项目在new module后,pom文件显示为Ignored pom.xml
- <MySQL>表中添加和删除字段
- Windows Vista 官方中文正式版(MSDN)(转载)
- vscode配置并运行swift
热门文章
- java工厂模式 uml_深入浅出设计模式-简单工厂模式
- JAVA中对象的序列化的作用?
- php min命令,php min函数怎么用?
- redis 哨兵 异步_突破Java面试(23-8) - Redis哨兵主备切换的数据丢失问题-阿里云开发者社区...
- 俄罗斯农民乘法 | 快速乘
- redis——Redis中的LRU算法改进
- 约瑟夫环-(数组、循环链表、数学)
- linux 中阻塞与非阻塞 同步与异步
- 华三交换机如何进入配置_学校机房项目交换机的如何配置,理解这篇,交换机配置不再难...
- C++ primer三章二节标准库类型string