二叉树-最近公共祖先(LCA)
来源:互联网 发布:程控切纸机程序编程 编辑:程序博客网 时间:2024/05/17 03:27
思路:递归的思想,如果当前节点的左子树和右子树各包括一个节点,则该节点就为最近公共祖先;如果当前节点等于其中的一个节点,则当前节点为最近公共祖先;如果当前节点的左子树或者右子树包括两个节点,则需要递归求该节点的左子树或者有子树。
struct Node{int data;Node* left, *right;};//count the number of p and q//这个函数这样写的很巧妙,如果将root==p||root==q//写在前面的话,我们将分不清另一个节点所在的子树就会比较麻烦 int getNumpq(Node *root,Node *p,Node *q){if(!root) return 0;int res=getNumpq(root->left,p,q)+getNumpq(root->right,p,q);if(root==p||root==q) return 1+res;else return res;}//Lowest Common AncestorNode* LCA(Node *root,Node *p,Node *q){if(!root||!p||!q) return NULL;if(root==p||root==q) return root;int matches=getNumpq(root->left,p,q);if(matches==1) return root;else if(matches==2) return LCA(root->left,p,q);else return LCA(root->right,p,q);}
- 二叉树-最近公共祖先(LCA)
- 二叉树最近公共祖先(LCA)
- 二叉树的最近公共祖先LCA
- LCA(最近公共祖先)
- 【最近公共祖先(LCA)】
- 最近公共祖先(LCA)
- 最近公共祖先(LCA)
- LCA(最近公共祖先)
- 二叉查找树(6) - 最近公共祖先LCA
- 二叉搜索树上的LCA(最近公共祖先)
- LCA----【模板】最近公共祖先(LCA)
- 求解二叉树中两个节点的最近公共祖先(LCA)
- 设计算法查找二叉树的两个结点最近公共祖先(LCA)
- 最近公共祖先LCA
- 最近公共祖先(LCA)
- Lca 最近公共祖先
- LCA----最近公共祖先
- LCA (最近公共祖先)
- Struts2中namespace的用法
- 努力在今天
- How to Set Up SSH Keys In Ubuntu
- 程序员的怎样快速成长进步
- android4.2编译(ubuntu 64位)
- 二叉树-最近公共祖先(LCA)
- nginx学习资料
- 添加/system/etc/init.d脚本支持
- Linux进程间通信——使用数据报套接字
- python学习资料
- Why and how to pack your textures for iOS/Android
- POJ 3614 Sunscreen 优先队列 贪心
- PHP效率提高及优化的常见方法
- Ant部署JSP文件