看完直接总结是最好的,越拖越晚越晚越拖嘿嘿
二叉搜索树性质
1.二叉树的性质:树&二叉
2.搜索性质:左子<父<右子
3.不存在的性质:平衡
操作
中序遍历:得到有序序列
函数调用是哪种序?都不是,在各个子程序调用之间及调用前后,可能存在调用方的操作,除非函数的调用行为保持规律
查找:search,min,suc,pre
我觉得从区间的角度考察二叉树十分合适,全体数构成一个区间,从根到叶二分搜索区间
search:二分搜索区间,失败(虚拟节点)——NIL
min:区间左端点
max:区间右端点
suc(后继):两个搜索方向,向上搜索自身所处的更大区间,区间增大可能导致右端点右移
向下搜索:继续细分区间
当向上向下都有大于当前节点的数时,下方的树在更小的区间,离当前结点更近
pre:
增:查
删:保持二叉树属性(连通,有序)
分类讨论
1.无子树
2.单子树
原节点与子树完成了一个方向的区间细分,且原节点为端点
直接将子树上提,不会对另一个方向的划分造成影响(没有节点)
3.双子树
在左子树中找前驱/或右子树找后继。则前驱/后继依然能够保持左右区间的正确划分
而且前驱后继只有最多一个子树,递归到更小子树的1,2情况
红黑树
属性:红-黑黑
子操作:旋转,