我有一些关于某些子节点放置的问题,因为我刚刚学习 BSTs,即使在阅读了一些资源并做了一些在线插入小程序之后,它仍然令人困惑。 假设我想将节点5,7,3,4添加到空的基本BST中。
add 5
5
add 7
5
7
add 3
5
3 7
add 4
5
3 7
4
好的,我知道左边的孩子必须少于父母而且小于或 等于来自同一父母的正确孩子。我跟着它,直到我们添加4节点。怎么样 我们确定4的插入位于右下叶位置3而不是左下叶位置? 此外,对节点5,18,3,7,11进行AVL插入产生了一些令人惊讶的位置放置。插入第四个节点7,下降到18而不是3.有特殊原因吗?假设这是正确的方法,插入11会切换11和18个点,但不会有18个作为父节点,7个作为左子节点,11个作为右子节点遵循左子节点小于父节点的原则或者等于正确的孩子?我糊涂了!我将不胜感激任何帮助。谢谢!
插入7
5
3 18
7
插入11
5
3 11
7 18
答案 0 :(得分:0)
在BST中,任何节点的左(右)子树中的元素都小于(大于)子树根的父节点。因此,在5的左子树中,3和4都小于5.现在看3.原因4向右,是因为4大于3,所以它向右。
您的AVL问题也是如此。 7成为18的左孩子,而不是3的右孩子,因为5是根。进行插入时,您可以一次比较一个元素。 “7大于5(根)吗?是的,向右移动.7大于18吗?不,向左移动。没有比较的节点,所以7在这里”。
11岁的孩子不适合BST。 11小于18,所以它应该在18的左子树中。