二叉查找树

查找树,小的在左、大的在右

查:用递归含if,在logN内找到元素结点

增:跟查的差不多,增加新结点相当于插入当时的叶子节点,或左或右
(建树就是一直调用增)

删:通过查找到target,判断左右子树是否为空,
若一边为空,直接继承别一边。
若两边都不为空,用右子树的min结点作为继承结点代替target
最后删除继承结点


为了防止一直插入小的/大的元素,导致斜树(单链表)

引出高度平衡的二叉搜索树

AVL:在插入新结点时,判断新节点到根的平衡因子是否合适,
不合适就再判断被插结点是LL,RR,LR,RL的那种,
分别进行右旋/左旋,以保证树的平衡


平衡:

左旋:被插结点的双亲结点变为他的Lc,
被插结点原来的Lc要变成双亲结点的Rc,
P树=被插结点

右旋反之

 

b-树就是m阶查找树,且符合一定性质

posted @ 2020-11-03 22:03  赫拉克利特  阅读(116)  评论(0编辑  收藏  举报