关于各种树的一些想法记录

2-3树和红黑树相比较BST的优势在哪里

生长方式
  • 2-3树和红黑树的生长方式是先变胖在增高,增高时根向上生长
  • BST的生长方向是增高再变胖,增高时叶子向下生长
高度变化

树生长方式的不同决定了树高度的变化方式。
2-3树和红黑树先变胖,即指优先改变单个节点的性质,例如像一个2-节点插入新值时,直接将其变为一个3-节点,这样就不会破坏树的平衡性。当然节点不能无限变胖,即设定好单个节点的容纳能力是有限的,2-3树中即单个节点最多容纳两个值,类似的还有2-3-4树。当某次插入新值后,是某个节点超过了其容纳能力后,这时就节点就会破裂,破裂后分离出的某个值向上输送(即根向上生长),如此递归调整后,会有两种结果,其中之一是没有波及到根节点,此时树的高度不变;另一种是波及到根节点,树的高度加一,此时树中所有节点的高度加一。不管哪种情况,树的平衡性都得到了完美的保持。
BST的生长方式是先变高,即直接插入某个值,这样不停地新增叶子节点的方式,必然会破坏树的平衡性。因此为了保持树的平衡性,每插入一个值后,如果破坏了树的平衡性就要做一次调整。这种调整的代价有时候会很大。因为每插入一个是树高增加的叶子节点都时需要判断判断树的平衡性有没有遭到破坏。

小结

到底哪一种生长方式“更自然”,BST的生长方式看起来更像自然界中树的生长方式。但是对于搜索来说,我们需要的是一棵最好能保持完美平衡的树,即“所有树枝的长度都一样”。自然界并不存在这样的树。从我们的要求来说,2-3树和红黑树的生长方式才更自然—–生长时最小限度的破坏树的平衡性。

  • 2-3树优先保持树的平衡性,这是通过放宽节点性质约束达到的(可以理解为以破坏二叉树节点性质为代价)
  • BST树优先保持二叉树节点的性质,把平衡性的保持放在第二位,当不得不调整平衡性时再做调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值