求一棵树中两节点之间距离(路径长度)的最大值
来源:互联网 发布:python列表转字典 编辑:程序博客网 时间:2024/06/05 20:22
题目如下:
/* * 查找一棵树两节点最长距离 * 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。 *写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。测试用的树: n1 / \ n2 n3 / \ n4 n5 / \ / \ n6 n7 n8 n9 / / n10 n11 * * */
代码如下:
public class LongestPath {public static void main(String[]args){TreeNode n1=new TreeNode(1);TreeNode n2=new TreeNode(2);TreeNode n3=new TreeNode(3);TreeNode n4=new TreeNode(4);TreeNode n5=new TreeNode(5);TreeNode n6=new TreeNode(6);TreeNode n7=new TreeNode(7);TreeNode n8=new TreeNode(8);TreeNode n9=new TreeNode(9);TreeNode n10=new TreeNode(10);TreeNode n11=new TreeNode(11);n1.left=n2;n1.right=n3;n2.left=n4;n2.right=n5;n4.left=n6;n4.right=n7;n5.left=n8;n5.right=n9;n6.left=n10;n9.left=n11;System.out.println(longestPath(n1));//System.out.println(deep(n1));}public static int longestPath(TreeNode root){int leftlong=0;int rightlong=0;if(root==null){return 0;}if(root.left==null&&root.right==null){return 0;}if(root.left==null){return Math.max(longestPath(root.right),deep(root.right)+1);}if(root.right==null){return Math.max(longestPath(root.left),deep(root.left)+1);}leftlong=longestPath(root.left);rightlong=longestPath(root.right);int t=Math.max(leftlong, rightlong);return Math.max(t,deep(root.left)+deep(root.right)+2);}//求树的深度public static int deep(TreeNode root){if(root==null){return 0;}if(root.left==null&&root.right==null){return 0;}if(root.left==null){return deep(root.right)+1;}if(root.right==null){return deep(root.left)+1;}return Math.max(deep(root.left),deep(root.right))+1;}}
TreeNode类如下:
class TreeNode {TreeNode left;TreeNode right;public int val;TreeNode(int val){this.val=val;}}
经测试,验证通过!!!
阅读全文
0 0
- 求一棵树中两节点之间距离(路径长度)的最大值
- 求二叉树中的最大路径和,也就是求节点和节点之间的路径上所有节点的最大值
- 寻找二叉树中长度为k的路径(根节点到叶子节点)
- 二叉树的两个节点之间最远的距离
- 二叉树中节点的最大距离(树的最长路径)——递归解法
- 二叉树中任意两个节点之间的最大距离
- 二叉树两个节点之间的最大距离
- 【数据结构】求节点的哈夫曼的带权路径长度
- POJ 1502 迪杰斯特拉求0节点到其他节点最短路径的最大值
- 求二叉树中节点的最大距离 即二叉树中相距最远的两个节点之间的距离
- 引入Hub再生的最短帧长及主机之间距离的最大值计算
- poj 2763 求任意树的2个节点之间距离和修改2点之间的距离
- 变形二叉树中节点的最大距离(树的最长路径)——非递归解法
- 二叉树(13)----求二叉树中任意两个节点之间的距离,递归和非递归
- LCA算法求任意两个节点之间的最小公共祖先(最短路径)
- 二叉树怎么打印根节点到指定节点的路径及两个节点之间的路径
- 求二叉树中的第一条最长路径长度,并输出最长路径上的节点
- Unity计算两点之间的距离或者向量的长度常用方法
- 【DL--08】深度学习 用于处理图像的CNN
- mysql数据备份的一个坑
- mybatis解决sql注入问题
- DOM、SAX、Pull解析XML
- Bootstrap源码之旅-variables
- 求一棵树中两节点之间距离(路径长度)的最大值
- nmcli双网卡绑定
- AsyncTask详解
- ajaxFileUpload上传图片
- 20170728_双端队列deque的常用函数
- springmvc单例的线程安全
- strpbrk函数
- memcached 和 redis 的区别与选择
- iMobile与Online在线场景数据的交互