C中的递归和树搜索?
一种新的树木和递归功能....
我知道如何创建堆栈以及如何创建递归函数的基础知识。
我正在进行预先排序的遍历搜索,当搜索的值与该节点的值匹配时,该搜索应返回树中节点的地址。
我在返回部分遇到问题...我试着在调用堆栈上读取一些东西......但我不明白如何实现它。它已经存在或者我必须制作这个堆栈吗?如果我必须制作它,我该如何制作这个堆栈?我读到它需要与树的高度成正比...是找到树高的最佳方法来制作另一个函数吗?
这是我到目前为止编写的一些代码:
Tree和NodePtr是一个指向节点的指针......
NodePtr SearchTree(int v, Tree T)
{
//printf(" %i n", T->value);
if(T->value == v)
{
return T;
}
else
{
if(T->Left != NULL) SearchTree(value, T->Left);
if(T->Right != NULL) SearchTree(value, T->Right);
}
return NULL;
}
没有找到相关结果
已邀请:
4 个回复
姬第柔炒
返回的内容,因为你正在使用递归将问题委托给自己的两个实例,所以如果你没有得到你的返回值,那么没有什么不可能工作:
邪罗逢确胃
荆怖赡
弓萍功
这是,我恭敬地提交,更简单。当然,它在处理NULL叶节点时再进行一次函数调用,但是散布的'if null'测试更少。 此外,我认为函数的参数(名义上是原始的树)与NodePtr的类型相同,所以我选择仅使用NodePtr而不是Tree。树由NodePtr表示,NodePtr是树的根节点。