LCA查找最近公共祖先
参考大佬的思路
//AC code
/*
1:根据中序,先序建树
2: 用 findnode( )查看待查询节点是否存在
3:若待查询节点是存在,用 LCA( )查找最近公共祖先
其中LCA有三种:
u,v都在左子树或右子树,或者u,v分别在左子树和右子树,
因此可采取如下步骤:
(1)::判断当前遍历的节点是否为空,为空返回null,
(2)::节点数据域是否等于u,是否等于p,是的话返回当前节点。
(3)::之后判断left 和right是否为空, 若都不为空 ,则当前root为祖先指针,
若其中一个为空,则返回另一边,为答案。
4:格式输出
*/
node *LCA(node *root, int u, int v) { //查找两节点最近祖先
if (root == NULL) return NULL;
if (root->data=https://www.it610.com/article/= u || root->data=https://www.it610.com/article/= v) return root;
node *left =LCA(root->lchild,u,v);
node *right = LCA(root->rchild,u,v);
if (left && right ) return root;
//u,v分别位于左右子树的情况
return left == NULL ? right : left;
}
---------------------
作者:菜多多
来源:CSDN
原文:https://blog.csdn.net/qq_41317652/article/details/82557975
版权声明:本文为博主原创文章,转载请附上博文链接!
【LCA查找最近公共祖先】https://blog.csdn.net/qq_41317652/article/details/82557975
推荐阅读
- JS中的各种宽高度定义及其应用
- 人生感悟记#环境仪器宋庆国成长记#072
- “精神病患者”的角度问题
- 放下心中的偶像包袱吧
- 疲困,却仍得继续
- RxJava|RxJava 在Android项目中的使用(一)
- 热爱的东西就得坚持哦
- 五一反思
- 谁还顾念小城的旧()
- c++基础概念笔记