二进制搜索树-C ++中的唯一值

时间:2018-11-23 21:02:05

标签: c++ binary-search-tree

该项目是向BST中的每个节点添加单词。 我需要计算BST中唯一或不同值的数量。

这是我添加单词的代码。我需要写作方面的帮助 int differentWords()const;。

void WordTree:: addPrivate(WordNode *n, ItemType v)
{
    if (root == NULL)
        root = new WordNode(v);
    else if (v == n->m_data)
    {
        n->m_count++;
    }
    else if (v < n->m_data)
    {
        if (n->m_left != NULL)
        {
            addPrivate(n->m_left, v);
        }
        else
        {
            n->m_left = new WordNode(v);
        }
    }
    else if (v > n->m_data)
    {
        if (n->m_right != NULL)
        {
            addPrivate(n->m_right, v);
        }
        else
        {
            n->m_right = new WordNode(v);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

在那棵树上,这与节点数相同。

递归确定节点数:

  • 如果树为空,则它没有节点。
  • 如果不为空,则其节点数比子树中节点数的总和多。

在C ++中,

int distinctWords(const WordNode* node)
{
    return node == nullptr 
           ? 0 
           : 1 + distinctWords(node->m_left) + distinctWords(node->m_right);
}