Data structures 基本和平衡BST插入节点放置
我有一些关于子节点的特定位置的问题,因为我只是在学习 即使在阅读了一些源代码和做了一些在线插入小程序之后,它仍然非常混乱。 假设我想将节点5,7,3,4添加到一个空的基本BSTData structures 基本和平衡BST插入节点放置,data-structures,tree,binary-search-tree,avl-tree,Data Structures,Tree,Binary Search Tree,Avl Tree,我有一些关于子节点的特定位置的问题,因为我只是在学习 即使在阅读了一些源代码和做了一些在线插入小程序之后,它仍然非常混乱。 假设我想将节点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的位置是右下叶位
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时,从3个节点下降到18个节点。有什么特别的原因吗?假设这是正确的方法,插入11将切换11点和18点,但18点作为父节点,7点作为左子节点,11点作为右子节点不符合左子节点小于父节点、小于或等于右子节点的原则吗?我糊涂了!我将感谢任何帮助。谢谢大家!
插入7
5
3 18
插入11
5
3 11
7 18
在BSTs中,任何节点的左(右)子树中的元素都小于(大于)子树根的父元素。所以,在5的左子树中,3和4都小于5。现在看3。4之所以向右,是因为4比3大,所以它向右 你的AVL问题也一样。7成为18的左子代,而不是3的右子代,因为5是根。在执行插入操作时,可以一次比较一个级别的图元。“7比5(根)大吗?是的,向右走。7比18大吗?不,向左走。没有要比较的节点,所以7在这里” 将11作为右边的子项不适合BST。11小于18,因此它应该位于以18为根的左边子树中
7 18