Java 前序遍历完成公共祖先结点的查找
来源:互联网 发布:淘宝种植箱图片及价格 编辑:程序博客网 时间:2024/06/05 14:16
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);System.out.println(findNode(root,n3,n4).value);}//找到两个结点的最近公共祖先public static BinaryTreeNode findNode(BinaryTreeNode root, BinaryTreeNode node1, BinaryTreeNode node2){Stack<BinaryTreeNode> s = new Stack<BinaryTreeNode>();BinaryTreeNode n = null;//遍历到的第二个结点BinaryTreeNode r = null;//首先遍历到的第一个结点boolean flag = false;//是否查询到了第一个结点boolean flag1 = false;//两个结点是否有一个结点是公共祖先结点BinaryTreeNode result = null;//如果不是一个公共结点就返回result结点while(root!=null || !s.isEmpty()){if(root!=null){if(!flag && (root == node1 || root == node2)){flag = true;if(root == node1){n = node2;r = node1;}else{n = node1;r = node2;}}if(root == n){if(!flag1){return r;}else{return result;}}s.push(root);System.out.println(root.value);root = root.leftNode;}else{result = s.pop();if(result == r){flag1 = true;}root = result.rightNode;}}return null;}}
0 0
- Java 前序遍历完成公共祖先结点的查找
- 巧用深度优先遍历(DFS)查找两个结点的最近公共祖先
- 查找最近公共祖先结点
- Java 两结点的最近公共祖先结点
- 树上两个结点的公共祖先
- 两个树结点的公共祖先
- 求两个结点的公共祖先
- 【Leetcode】查找二叉树中任意结点的最近公共祖先(LCA问题)
- 设计算法查找二叉树的两个结点最近公共祖先(LCA)
- 习题6.15查找二叉树结点公共祖先
- 二叉树中找两个结点的最近的公共祖先结点
- 二叉树两结点的最低公共祖先结点(一)
- 二叉树中找两个结点的最近公共祖先结点
- 二叉树中找两个结点的最近公共祖先结点
- 二叉树公共祖先节点的查找
- 查找两个节点最近的公共祖先
- 第19题 在二叉查找树中找到两个结点的最低公共祖先 Lowest Common Ancestor
- 二叉树结点公共祖先
- ubuntu配置JDK
- 通过鼠标控制镜头绕着某物体旋转
- 区域赛系列一多边形划分
- robotium:tearDown中使用solo.finishOpenedActivities()会导致执行测试用例crash问题
- 表单的提交方式
- Java 前序遍历完成公共祖先结点的查找
- 身份识别协议枚举工具ident-user-enum
- GeoMesa架构
- 【实用】Windows 下载 Python 第三方库的网站
- 自定义 React Native 二维码扫描组件(简单,易用!)
- Java内部类_成员内部类_非静态
- 将Sublime Text 3打造成OpenCV3.2的IDE
- 表单验证 jquery
- Mysql select查询执行过程