我正在尝试编写一个函数来搜索二叉搜索树中的值,并返回带有值的TreeNode。
struct TreeNode
{
int value;
struct TreeNode *pLeft, *pRight;
};
TreeNode* SearchTree(int query);
(对于任何节点:this->pLeft
包含的节点少于this->value
,this->pRight
包含的节点大于this->value
)
答案 0 :(得分:2)
这将是:
treenode* SearchTree(int query, treenode* node)
{
if(node == NULL)
return NULL;
else if(query == node->value)
return node;
else if(query < node->value)
return SearchTree(query, node->pLeft);
else if(query > node->value)
return SearchTree(query, node->pRight);
else
return NULL;
}
如果您所在的节点具有您要搜索的值,则返回节点地址。如果当前节点值小于您要搜索的值,请沿着右侧叶子向下,如果当前节点值超过您要搜索的值,请在左侧叶子下方。继续递归,直到你遇到一片空叶,这取决于你对树结束方式的实现。但这是一般的想法。
答案 1 :(得分:0)
您可以使用递归来解决此问题。
您需要一个终止步骤。
您还需要一个检查树节点并自行调用的递归步骤。
我建议您在找不到时使用NULL
作为返回值。