最近公共祖先 Lowest Common Ancestors
Posted yy-1046741080
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最近公共祖先 Lowest Common Ancestors相关的知识,希望对你有一定的参考价值。
在介绍官方解法之前,我先讲述一下我的方法:
struct node int data; int parent,left,right; // 静态实现 ;
- 在建立树的时候,通过传参,实现了parent的建立(指向父节点)
- 我们的目的是寻找i,j的公共结点; 如果parent=-1,那么说明为根结点。
- 找到i,j对应的结点,然后根据parent的值将根结点到i,j的路径存入栈中。此时得到两个栈。
- 比较栈首元素,最后一个相同的元素就是LCA。
这个方法的优点在于:没什么太多的限制,效率也还OK。
如果二叉树根据顺序存储,(一般下标对应编号),那么一下算法可以解决:
- 要找到i,j的LCA
- 如果i<j,说明要么i比j层低,要么i在j的左侧;因此j=j/2;
- 如果i>j,同理,i=i/2;
- 直到i=j,停止,此时i/j代表的就是LCA。
以上是关于最近公共祖先 Lowest Common Ancestors的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 235. 二叉搜索树的最近公共祖先(Lowest Common Ancestor of a Binary Search Tree) 32
[leetcode]236. Lowest Common Ancestor of a Binary Tree二叉树最近公共祖先
LeetCode 236.lowest-common-ancestor-of-a-binary-tr
LeetCode 236.lowest-common-ancestor-of-a-binary-tree
88 Lowest Common Ancestor of a Binary Tree
Leetcode 235 Lowest Common Ancestor of a Binary Search Tree 二叉树