二叉树节点间的最大距离问题
来源:互联网 发布:session用法 java 编辑:程序博客网 时间:2024/06/05 22:29
//二叉树节点间的最大距离问题public class MaxDistanceOfTree{//二叉树节点的定义public static class Node{public int value;public Node left;public Node right;public Node(int data){this.value=data;}}//获得一个二叉树两个节点间的最大距离/** 最大子树的长度为:左子树最大长度+右子树最大长度+1*/public static int getMaxDistance(Node head){ int []num=new int[1]; //用来记录每个子树的节点的长度 //System.out.println(num[0]); return posOrder(head,num); }//通过二叉树的后序遍历public static int posOrder(Node head,int []num){if(head==null){ num[0]=0;return 0;}//递归调用左子树 int lMax=posOrder(head.left,num); int maxfromLeft=num[0]; //System.out.println(maxfromLeft); //递归调用右子树 int rMax=posOrder(head.right,num); int maxfromRight=num[0]; int curNodeMax=maxfromLeft+maxfromRight+1; //左右子树最大长度相加1 num[0]=Math.max(maxfromLeft,maxfromRight)+1; return Math.max(Math.max(lMax,rMax),curNodeMax);}public static void main(String[]args){ /** 构造的二叉树 1 2 3 4 5 6 7 8 */ Node head=new Node(1);head.left=new Node(2);head.right=new Node(3);head.left.left=new Node(4);head.left.right=new Node(5);head.right.left=new Node(6);head.right.right=new Node(7);head.right.right.left=new Node(8); //获得二叉树节点间的最大距离System.out.println(getMaxDistance(head));}}
阅读全文
0 0
- 二叉树问题---二叉树节点间的最大距离
- 二叉树节点间的最大距离问题
- 二叉树节点间的最大距离问题
- 二叉树节点间的最大距离问题
- 二叉树节点间的最大距离
- 求二叉树节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 求二叉树节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 求二叉树节点的最大距离
- 二叉树中节点的最大距离
- C++STL--map和set词频统计和单词转换
- spring-boot+JPA+Thymeleaf动态生成select下拉选
- 行业资深人士预测:2018年新能源汽车技术发展趋势---凯利讯半导体
- 当我们讨论软降工程的时候在讨论什么
- 内网穿透一
- 二叉树节点间的最大距离问题
- windows下安装hadoop时找不到JAVA_HOME: JAVA_HOME is incorrectly set.
- Python与Anaconda离线安装TensorFlow For Windows
- C语言程序获取或者打印当前语句所在的行号、当前源文件的文件名、程序编译的日期等信息(__LINE__、__FUNCTION__、__FILE__、__DATE__、__TIME__)
- poj日记(1005)
- web安全之文件上传漏洞攻击与防范方法
- ThreadLocal源码解析
- OpenCV3.2.0 双目标定+立体匹配(官方自带例子的使用方法)
- Oracle中rank() over, dense_rank(), row_number() 的区别