二叉树编程专题--查找最低公共父节点
来源:互联网 发布:xio网络用语什么意思 编辑:程序博客网 时间:2024/05/22 08:50
1.题目
给定二叉树,计算出两个给定的结点的公共结点。
2.解法–递归
从根节点开始,递归遍历左右子树,查看是否从该节点能遍历到这两个给定的结点中的至少一个,返回能遍历到的指定节点,如果都能遍历到,返回的是最低父节点。当然能否遍历到是依靠下层遍历的结果的。具体看代码:
public static Tree beginFind(Tree node, Tree oneNode, Tree anotherNode) { if (node == null) { return null; } // 当前节点正好是关心的两个节点中的一个,返回当前节点,表示找到了一个节点 if (node == oneNode || node == anotherNode) { return node; } // 看当前节点的左子树是否包含两个指定节点 Tree leftNode = beginFind(node.leftChild, oneNode, anotherNode); // 看当前节点的左子树是否包含两个指定节点 Tree rightNode = beginFind(node.rightChild, oneNode, anotherNode); // 返回左右结果中不为空的值,如果都不为空(也就是找到了最低公共父节点),则返回当前节点(最低公共父节点) if (leftNode == null) { return rightNode; }else if (rightNode == null) { return leftNode; }else { // 当左右子树分别找到一个结点时,这个结点就是最低的公共父节点,返回该公共父节点。 // 回到上一层递归时,因为另外的beginFind方法返回的必然是null,因此继续返回该公共节点,直到最上层结束。 return node; }}public static void main(String[] args) { // 初始化一个树 Tree node0 = new Tree(0); Tree node1 = new Tree(1); Tree node2 = new Tree(2); Tree node3 = new Tree(3); Tree node4 = new Tree(4); Tree node5 = new Tree(5); Tree node6 = new Tree(6); Tree node7 = new Tree(7); Tree node8 = new Tree(8); Tree node9 = new Tree(9); Tree node10 = new Tree(10); node0.leftChild = node1; node0.rightChild = node2; node1.leftChild = node3; node1.rightChild = node4; node2.leftChild = node5; node2.rightChild = node6; node3.leftChild = node7; node3.rightChild = node8; node4.leftChild = node9; node4.rightChild = node10; // 开始查找最低父节点 Tree resultNode = beginFind(node0, node4, node8); System.out.println(resultNode.value);}
阅读全文
0 0
- 二叉树编程专题--查找最低公共父节点
- 二叉树的最低公共父节点
- 二叉树的最低公共父节点
- 二叉树最低公共父节点
- 二叉树中查找两个节点的最低公共祖先
- 二叉树中两个节点的最低公共父节点
- [数据结构和算法]二叉树最低公共父节点
- 二叉树查找最近公共父节点
- 二叉树(12)----查找两个节点最低祖先节点(或最近公共父节点等),递归和非递归
- 二叉树中两节点的最低公共父节点。
- 求二叉树两节点的最低公共节点
- 找出二叉树中任意两个节点的最低公共父节点
- 满排序二叉树任意三个节点最低公共父节点
- 查找树中两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先(LCA)
- 二叉树两个节点的最低公共最先问题
- 求二叉树中两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 26、图算法-最小生成树、最短路径
- android:windowBackground 和 Android:background 的区别
- 未知:数列——题解
- Oracle的安装
- 少年,请专心练剑!
- 二叉树编程专题--查找最低公共父节点
- [C 语言]判断某文件是文件夹还是文件
- SQL 排序查询
- 快速排序算法
- 巧妙转换复杂数据的格式
- HDU1102 Constructing Roads 最小生成树prim||kruskal
- 2.S5PV210中PWM定时器2控制蜂鸣器
- 华为笔试:进制转换
- 【shiro】--- 集成web