【二叉树】求二叉树中两个节点的最近公共父节点
2013-10-30 15:03
218 查看
BTNode *pResult = null; //权值方法 int GetFirstCommonFather(BTNode *root,BTNode *p1,BTNode *p2) { if(pResult != null) return 0; //如果result所指向的不为null,说明已经找到。 if(root == null) return 0; int sum = 0; if(root == p1 || root == p2) sum += 1; sum += GetFirstCommonFather(root->lchild,p1,p2); sum += GetFirstCommonFather(root->rchild,p1,p2); if(sum == 2 && pResult == null) { pResult = root; return 0; } return sum; } //更牛逼的方法 BTNode *GetFirstCommonFather(BTNode *root,BTNode *p1,BTNode *p2) { if(root == NULL) return NULL; if(root == p1 || root == p2) { return root; } BTNode *pLeft = GetFirstCommonFather(root->lchild,p1,p2); BTNode *pRight = GetFirstCommonFather(root->rchild,p1,p2); if(pLeft && pRight) { return root; } return pLeft ? pLeft : pRight; }
http://sxnuwhui.blog.163.com/blog/static/13706837320129225952111/
相关文章推荐
- 二叉树(12)----查找两个节点最低祖先节点(或最近公共父节点等),递归和非递归
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- [转]程序员面试100题之十六:二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 求二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点 非二叉排序树
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点 使用二叉排序树
- 【二叉树12】求一颗二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 在二叉树中查找两个节点的最近的公共祖先节点(有回溯指针)(NCA--nearest common ancestor)
- 二叉树——查找两个任意节点的最近祖先
- 求解二叉树中两个节点的最近公共祖先(LCA)
- 微软亚洲工程院面试题:寻找两个二叉树节点的最近祖先
- 二叉树——查找两个随机节点最近的祖先
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 求二叉树的任意两个节点的最近公共祖先
- 求二叉树中两个节点的最近公共祖先