2 sssherryal sssherryal 于 2016.04.21 18:28 提问

关于求二叉树的最低公共结点

源代码:

int hasnode(bitree t,char c)
{
if(!t)
return 0;
else if(t->data==c)
return 1;
return (hasnode(t->lchild,c)||hasnode(t->rchild,c));
}

bitree commonfather(bitree t,char c1,char c2)
{
if(hasnode(t,c1)==0||hasnode(t,c2)==0)
return 0;
while(1)
{
if((hasnode(t->lchild,c1)&&hasnode(t->rchild,c2))||(hasnode(t->lchild,c2)&&hasnode(t->rchild,c1)))
return t;
else if(hasnode(t->lchild,c1))
t=t->lchild;
else t=t->rchild;
}
}

前面那个函数测试成功了,但是后面那个函数怎么都没办法正常运行。求助求助!(>o<)

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.21 22:31
CSDNXIAON
CSDNXIAON   2016.04.21 18:32

二叉树的最低公共父节点
二叉树的最低公共父节点
求一棵普通树的两个结点的最低公共祖先
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
二叉树中任意两节点的最低共同父节点
通过两个和二叉树相关的算法题来看看和递归在二叉树中的应用 输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。 思路: 如果这两个节点不在同一个子树下面,那么这棵树的根节点就是他们的共同最低父节点。 如果两个都在右子树,那么以右子树的最上面的那个节点作为根节点,重新进行判断,递归调用。 同理两个都在左子树,则方法同上。  也就是说,最终的结果分别只有三种情况,一个节点在
找出二叉树中任意两个节点的最低公共父节点
如图中H和F的最低公共祖先节点就是A 解法1: 遍历出所有叶节点到根节点的路径,得到 ABD ABEH ACFI ACG 可以发现要找出H和F的最低祖先节点只要找到任意一条包含F和任意一条一条H的字符串,找出最大前缀的位置即可 这里找出ABEH和ACFI 最大前缀位置即为A处,所以这里A是最低祖先节点 解法2: 写一个递归算法: find(Node root,Node n1,
麒麟远创面试题3:二叉树中求两个节点的最低公共祖先节点
题目要求:求二叉树中两个节点p,q的最低公共祖先节点
剑指offer 面试题50—树中两个节点的最低公共祖先
#include #include #include using namespace std; typedef struct TreeNode { int data; struct TreeNode *lchild; struct TreeNode *rchild; }TreeNode,*BiTree; //按先序序列创建二叉树 int C
二叉树系列——两个节点的最低公共祖先
出处:https://segmentfault.com/a/1190000003509399 二叉搜索树: Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. According to the definition of LCA
二叉树中两节点的最低公共父节点。
找两个节点的最低公共父节点,也即找到一个节点,使其左、右子树分别包含所要找的两个节点。如下图: ___________3______ / \ ___5__ ___1__ / \ / \ 6 _2 0 8 / \
求树中两个节点的最低公共祖先
情形1:树是搜索二叉树 思路:从树的根节点开始遍历,如果根节点的值大于其中一个节点,小于另外一个节点,则根节点就是最低公共祖先。否则如果根节点的值小于两个节点的值,则递归求根节点的右子树,如果大于两个节点的值则递归求根的左子树。如果根节点正好是其中的一个节点,那么说明这两个节点在一条路径上,所以最低公共祖先则是根节点的父节点 public static BinaryTreeNode get
二叉树中查找两个节点的最低公共祖先
这是一道企业面试中,经常会被问到的面试题目。 在网上看到一些此题的实现,其中有两种方法是比较适合编程的。本项目的源代码,请点击这里下载。 方法一:   此方法是根据二叉树的DFS查找并标记祖先,根据递归出栈的原理,找到公共祖先。   其主要代码如下:
求二叉树中两个节点的最小公共祖先(LCA)
题目要求:求二叉树中两个节点p,q的最低公共祖先节点   首先,题目中没有明确说明节点的结构,所以思考了一会然后问面试官节点有没有父指针,面试官说有没有父指针有影响吗?我说有,然后他笑着说你来说说看。当时,只做出来有父指针的情况,没有父指针的情况压根想不出来。后来会实验室静下心来很快就想到了思路。这里分这两种情况讨论:   1. 二叉树节点具有父指针
树中两个节点的最低公共祖先(Java实现)
本题为剑指offer面试题50 在牛客网没有找到类似的题目,所以笔者自己建了三棵树进行测试 如有问题欢迎指正。 题目:求树中两个结点的最低公共祖先 分析:其实这是一组题目,考官没有说清楚树的结构,那么做法就不尽相同。 比如,如果是二叉搜索树的话,我们只需从根结点判断,如果二结点与根的左右子树比较一大一小,那么跟结点就是二者最低公共祖先;如果二结点都比左子结点小,向