二叉搜索树问题

时间:2010-12-13 01:06:07

标签: c++

我正在尝试编写一个函数来搜索二叉搜索树中的值,并返回带有值的TreeNode。

struct TreeNode
{
    int value;
    struct TreeNode *pLeft, *pRight;
};
TreeNode* SearchTree(int query);

(对于任何节点:this->pLeft包含的节点少于this->valuethis->pRight包含的节点大于this->value

2 个答案:

答案 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作为返回值。