【发布时间】:2019-09-30 12:18:35
【问题描述】:
我正在跟踪教授给出的部分代码,但我不明白二叉树是如何工作的。问题是:“编写一个函数来查找二叉搜索树中的最低共同祖先并返回一个指针。树 T 中两个节点 a 和 b 之间的最低共同祖先定义为 T 中同时具有 a 和 b 作为后代的最低节点。 以下面的树为例。 4和8的最低共同祖先是6。4和14的最低共同祖先是10。”
10
6 14
4 8 12 16
我的问题是我不明白它是如何循环的?
node *lca(node *ptr, int a, int b)
{
if(ptr==NULL)
return NULL;
while (ptr != NULL)
{
if (ptr->key >= a && ptr->key <= b)//What's key?
return (ptr);
else if (ptr->key > b)
ptr = ptr->left;
else if (ptr->key < a)
ptr = ptr->right;
}
return (ptr);
}
【问题讨论】:
-
该代码有什么问题,或者您只需要解释他在做什么以及如何做?
-
@Suma 代码很好。我希望既然教授给了它。我需要一个关于他在做什么以及如何做的解释
标签: loops pointers tree binary-tree nodes