【发布时间】:2014-11-24 13:59:15
【问题描述】:
我的目标是为伪帕斯卡代码的编译器创建一个 BST(二叉搜索树)。
据我所知,BST 的工作原理是这样的:我有一个根,它有一些密钥 - 依赖于我的生成密钥(如果它大于或小于根密钥)我从左侧或右侧插入一个节点根。
显然,如果我使用数字作为键,树会变成这样:
1
\
2
\
3
我想要的是一个平衡的 BST,像这样:
1
/ \
2 3
... etc.
这些键显然不会发生这种情况。当我想实现这种结构时,节点的键应该如何?有没有办法在不记住最后插入的密钥的情况下做到这一点?
这也让我想到什么“键”应该用于树的绝对根?所以我可以从它的左侧和右侧添加键?
【问题讨论】:
-
你已经标记了这个 C 和二叉树。您是否有一个 C 代码示例来展示您尝试过的内容? sscce
-
我认为第二个例子应该是
2到根目录。 -
@ryyker 是的,我确实有它的代码,但它与问题无关,因为我更好奇它的原理。我编辑了标签。 :)
标签: binary-tree