Java 两结点的最近公共祖先结点
来源:互联网 发布:centos将man改为中文 编辑:程序博客网 时间:2024/06/03 17:33
public class Main {public static void main(String[] args) throws Exception {BinaryTreeNode root = new BinaryTreeNode();BinaryTreeNode n1 = new BinaryTreeNode();BinaryTreeNode n2 = new BinaryTreeNode();BinaryTreeNode n3 = new BinaryTreeNode();BinaryTreeNode n4 = new BinaryTreeNode();BinaryTreeNode n5 = new BinaryTreeNode();root.value = 50;n1.value = 25;n2.value = 75;n3.value = 10;n4.value = 35;n5.value = 35;root.leftNode = n1;root.rightNode = n2;n1.leftNode = n3;n1.rightNode = n4;System.out.println(findNode(root,n1,n5).value);}//找到两个结点的最近公共祖先public static BinaryTreeNode findNode(BinaryTreeNode root, BinaryTreeNode node1, BinaryTreeNode node2){List<BinaryTreeNode> path1 = new ArrayList<BinaryTreeNode>();List<BinaryTreeNode> path2 = new ArrayList<BinaryTreeNode>();boolean flag1 = false;boolean flag2 = false;flag1 = getPath(root,node1,path1);flag2 = getPath(root,node2,path2);if(flag1 == false || flag2 == false){return null;}return findCommonNode(path1,path2);}//找到目标结点的路径public static boolean getPath(BinaryTreeNode root, BinaryTreeNode node, List<BinaryTreeNode> path){if(root!=null){path.add(root);}if(node == root){return true;}if(root == null){return false;}boolean found = getPath(root.leftNode,node,path);if(!found){found = getPath(root.rightNode, node,path);}if(!found){path.remove(path.size()-1);}return found;}//找到两条路径的最后一个相同的结点public static BinaryTreeNode findCommonNode(List<BinaryTreeNode> path1, List<BinaryTreeNode> path2){BinaryTreeNode result = path1.get(0);int temp = 0;while(temp<path1.size() && temp<path2.size() && path1.get(temp) == path2.get(temp)){result = path1.get(temp);temp++;}return result;}}
0 0
- Java 两结点的最近公共祖先结点
- 二叉树中找两个结点的最近的公共祖先结点
- 二叉树中找两个结点的最近公共祖先结点
- 二叉树中找两个结点的最近公共祖先结点
- 查找最近公共祖先结点
- 二叉树两结点的最低公共祖先结点(一)
- 求二叉树两结点最近的共同祖先结点
- 通过邻接矩阵找到两个节点的最近公共祖先结点
- 求二叉树中两个结点的最近公共祖先
- 最近公共祖先—单链表最近公共结点
- 两链表的第一个公共结点->二叉树两结点的最近共同父结点
- 二叉搜索树两结点最低公共祖先结点
- 二叉树两结点最低公共祖先结点(二)
- Java 前序遍历完成公共祖先结点的查找
- 树上两个结点的公共祖先
- 两个树结点的公共祖先
- 求两个结点的公共祖先
- 【Leetcode】查找二叉树中任意结点的最近公共祖先(LCA问题)
- jmeter中java协议请求
- Java NIO系列博客之组件篇
- DataReader类 DataSet类
- 活动链接
- windows安装caffe碰到的errorMSB3721: 命令“”C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.
- Java 两结点的最近公共祖先结点
- 教您画函数图像的方法
- 介绍一篇“让echarts柱状图的每个柱子显示不同的颜色”的好博客
- 块级元素与行内元素的区别
- 设计模式之——观察者模式
- java-web-Filter-登录验证之筛选器使用实例
- 我的学习路线
- gradle多渠道打包
- Debian-8.7.1 系统安装