【发布时间】:2015-01-16 02:24:04
【问题描述】:
我正在尝试从 BST 打印 n 最大值,指针肯定有问题,这是我的部分代码。
void bt_printN(node *leaf,int *n)
{
if((leaf != NULL) && *n > 0)
{
bt_printN(leaf->right,n);
printf("%s %d\n",leaf->word, leaf->i);
*n--;
bt_printN(leaf->left,n);
}
}
这不起作用,将n 值传递给这样的递归函数的正确方法是什么?
【问题讨论】:
-
通行证OK;不是减量。
*n--递减指针,而不是指向的值;你需要(*n)--来减少值。其他一切是否正常是一个单独的讨论;看起来它更有可能打印 N 个最小值 - 除非,正如已经指出的那样,你先做 RHS,所以......毕竟你可能没问题。 -
Coudl 你把它发布为答案,所以我会接受它
-
@WhozCraig:是的,我看到它将首先使用最大值。我怀疑代码应该在递归 on
leaf->right之后检查*n > 0,然后再打印出当前节点,因为n的值可能通过调用缩小了。
标签: c algorithm pointers binary-search-tree