【发布时间】:2020-04-30 00:27:30
【问题描述】:
我有一个二叉树,每个节点的数据都基于人(名字和姓氏、邮政编码、ssn 和出生日期)。该树基于创建时这些人的名字和姓氏(比较字符串,较小的向左),但我需要在同一棵二叉树中找到最年长的人。我当前的代码如下,我认为我在逻辑上走在正确的道路上。现在它只是返回一个错误,rightold 和 leftold 不是 NULL,但它们的初始值应该是什么?我现在的逻辑是否存在缺陷?我现在真的很难过,并且已经调整了一段时间。提前致谢!!
PS - 日期值是 YYYYMMDD 作为 int 的组合,这就是为什么我希望在比较中最小的日期值是我最旧的。
node * Tree::oldest(node * x)
{
node * rightold, * leftold, * res, * finalRes;
if (x -> right != NULL)
{
rightold = oldest (x->right);
}
else if (x -> left != NULL)
{
leftold = oldest (x->left);
}
if (rightold -> date < leftold -> date)
res = rightold;
else
res = leftold;
if (res -> date < x -> date)
finalRes = res;
else
finalRes = x;
return finalRes;
}
【问题讨论】:
-
在取消引用之前不要检查
x、rightold或leftold。
标签: c++ data-structures binary-tree binary-search-tree