博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求二叉树中两个节点的最低父节点
阅读量:6312 次
发布时间:2019-06-22

本文共 827 字,大约阅读时间需要 2 分钟。

对于两个节点的最低父节点的定义可以分为两种情况(1)像5和8最低公共父节点是3,两节点之间不存在父子关系(2)两节点存在父子关系,如5和4,最低公共父节点是5。 引用维基百科的话:The lowest common ancestor (LCA) is a concept in  and . Let T be a rooted  with n . The lowest common ancestor between two nodes v and w is defined as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).       _______3______       /              \    ___5__          ___1__   /      \        /      \   6      _2       0       8         /  \         7   4 可以采用从顶往下的计算及先序遍历。也可以采用树的后续遍历来实现。相比较来说后续遍历更为简洁,时间复杂度最低为O(n)

Node *LCA(Node *root,Node *p,Node *q)

{
if(!root)
return NULL;
if(root==p||root==q)
return root;
Node *L=LCA(root->left,p,q);
Node *R=LCA(root->right,p,q);
if(L&&R)
return root;
return L?L:R;
}

 

转载于:https://www.cnblogs.com/dyc0113/archive/2013/03/25/2979983.html

你可能感兴趣的文章
我的Android进阶之旅------>WindowManager.LayoutParams介绍
查看>>
segment
查看>>
获取鼠标的原始移动值
查看>>
Linux信号 编程
查看>>
有关滚动与位置
查看>>
Box2D自定义重力
查看>>
chpasswd
查看>>
mysqldump --single-transaction 和--lock-tables参数详解
查看>>
android 数据库_sql语句总结
查看>>
python购物车
查看>>
解决python2和python3的pip冲突
查看>>
面试/编程
查看>>
linux每日命令(16):head命令
查看>>
公司内部分享【富有成效的每日站会】总结
查看>>
打造一个上传图片到图床利器的插件(Mac版 开源)
查看>>
iOS横竖屏
查看>>
thinkphp判断更新是否成功
查看>>
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>