如何求树中的两个节点的最近公共祖先?
来源:互联网 发布:汽车保险算法 编辑:程序博客网 时间:2024/05/18 18:44
如何求树中的两个节点的最近公共祖先?
看到别人的一个比较好的写法如下,大多数人的写法是把父节点存入数组,然后遍历父节点数组寻找最后一个相同节点
或者用含有指向父节点指针的树结构,向上遍历父节点找第一个相同节点为最近祖先节点
struct Node{int data;Node* left;Node* right;};int fun(Node* root,Node* ptr1,Node* ptr2,Node** out){if(root==NULL)return 0;if(root==ptr1||root==ptr2)return 1;int leftint=0,rightint=0;leftint= fun(root->left,ptr1,ptr2,out);if(leftint==2)return 2;rightint=fun(root->right,ptr1,ptr2,out);if(rightint==2)return 2;}if(leftint+rightint==2)*out=root;return leftint+rightint;}int main(){Node* root=...;Node* ptr1=...;Node* ptr2=...;Node* out;int n=fun(root,ptr1,ptr2,&out);if(n==2)cout<<"result node is: "out->data<<endl;elsecout<<"Node not exist...";return 0;}
- 如何求树中的两个节点的最近公共祖先?
- ~求两个节点的最近公共祖先~
- 求两个节点最近的公共祖先
- 求二叉树中两个节点的最近公共祖先
- 求二叉树中两个节点的最近公共祖先
- 求二叉树中两个节点的最近公共祖先
- 求二叉树中两个节点的最近公共祖先
- 求二叉树中两个节点的最近公共祖先
- 求两个节点的最近公共祖先节点
- 求两个节点的最近公共祖先节点
- 求两个节点的最近公共祖先节点
- 求两个节点的最近公共祖先节点
- 求二叉树中两个节点的最近公共祖先节点
- 求二叉树中两个节点的最近公共祖先节点
- 二叉树两个节点求最近的公共祖先节点java代码实现
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共祖先节点
- Literal控件的用法
- 实用算法实现-第 17 篇强连通分支
- window.showModalDialog的传值和返回值
- DSP Lib的编写
- 各种排序算法
- 如何求树中的两个节点的最近公共祖先?
- The 36th ACM/ICPC Asia Regional Fuzhou Site / 1010 War
- 游戏服务器端开发要点
- ORACLE +win2003 群集手记
- 微软企业库5.0
- joj2511
- Magic ajax
- 关于linux系统添加或更新源时,报没有公钥,签名无法验证的错误到处理办法
- 有限状态机(修改颜色与格式,方便阅读)