插入BST

时间:2013-10-08 22:30:55

标签: binary-search-tree

我想创建BST的可视化,但是我在网上找到的每个示例在仅插入7个或更少的值后停止。假设我正在执行以下序列:

插入件(5),插入(7),插入(9),插入(8),插入(3),插入(2),插入(4),插入(6),插入件(10)。

直到插入(6),我最终得到:

http://i.imgur.com/sFn8bSU.png

我的主要问题是:我从哪里开始?我是否添加到最左边的叶子上还是添加到我的“最低”叶子上?

另外:根据维基百科,插入的代码是:

void insert(Node* node, int value) {
    if (value < node->key) {
        if (node->leftChild == NULL)
            node->leftChild = new Node(value);
        else
            insert(node->leftChild, value);
    } else {
        if(node->rightChild == NULL)
            node->rightChild = new Node(value);
        else
            insert(node->rightChild, value);
    }
}

但是根据这个,一旦我在8并且我得到插入(3),它将在8的左边增加3,因为它将比较3与节点9,看到小于点是已经被8占用,然后重新运行插入,8是节点比较,并将3作为8的左子节点。但这只会创建一种列表。

感谢。

1 个答案:

答案 0 :(得分:0)

似乎误导你的是,在每个插页上,你必须从根开始(在你的情况下,是5)。所以,让我们看看上面的图表并尝试按照您粘贴的算法插入3:

3 < 5, we go left and we meet 3
3 == 3, we go right (here it's the same, the code above says "go right") and we meet 4
3 < 4, we go left. Since 4 has no left child, 3 becomes its left child.

尝试使用上面的算法从零构建树。顺便说一下,你找不到很多n&gt;的例子。 10个节点,因为它们往往非常长,对读者没有任何好处。

相关问题