我想创建BST的可视化,但是我在网上找到的每个示例在仅插入7个或更少的值后停止。假设我正在执行以下序列:
插入件(5),插入(7),插入(9),插入(8),插入(3),插入(2),插入(4),插入(6),插入件(10)。
直到插入(6),我最终得到:
我的主要问题是:我从哪里开始?我是否添加到最左边的叶子上还是添加到我的“最低”叶子上?
另外:根据维基百科,插入的代码是:
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的左子节点。但这只会创建一种列表。
感谢。
答案 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个节点,因为它们往往非常长,对读者没有任何好处。