我是二元搜索树数据结构的新手。有一点我不明白为什么leftest节点是最小的
10
/ \
5 12
/ \ / \
1 6 0 14
在上面的例子中,0是最小值而不是1.
让我知道我混在哪里。
谢谢!
答案 0 :(得分:1)
我不太确定你的问题,但二进制搜索的工作方式是将搜索值与节点的值进行比较,从根节点开始(此处为值10)。如果搜索值较小,则它会查看根的左侧节点(值5),否则它会在右侧节点(12)处查找。
只要越来越多的规则被遵循,树中的值就越大并不重要。
实际上,你想要像这样设置树(坏0节点除外),因为树越平衡(左边的节点数与右边的节点数),你的搜索越快将是!
例如,树平衡算法可能会在值列表中查找中值,并将其作为根节点的值。答案 1 :(得分:1)
该树不是二叉搜索树。
创建二进制搜索树是一个从添加开始的过程 元件。
你可以用数组来做。
首先没有元素所以让它成为root。然后开始添加元素作为node。如果新值大于之前添加数组[2 x n + 1](最后一个值的调用索引:n)。如果它小于之前将其添加到数组[2 x n]。因此,任何节点剩下的所有值都小于它,并且任何节点右边的所有值都大于它。即使10和6的位置也不能是11.(在你的树上,它实际上并非如此。)。这就是全部!
答案 2 :(得分:1)
要将树视为二叉搜索树,它必须满足以下属性:
...每个节点中的密钥必须大于存储在左子树中的所有密钥,并且小于右子树中的所有密钥
来源:https://en.wikipedia.org/wiki/Binary_search_tree
您发布的树不是二叉搜索树,因为根节点(10)不小于右子树(节点0)中的所有键