AVL 红黑树 唯一性 分析 目前均不唯一 AVL的左右旋
AVL
依次插入1、2、3,
插入3,1不平衡了,对节点1左旋后平衡。
graph
1((1))-->2L((NIL))
1((1))-->2((2))
graph
2((2))-->1((1))
2((2))-->3((3))
逆序,依次插入,
插入1,3不平衡了,对节点3右旋后平衡。
依次插入9、1、6,
插入6,9不平衡了,对节点1左旋,再对节点9右旋后平衡。
graph
9((9))-->1((1))
9((9))-->1R((NIL))
1((1))-->6L((NIL))
1((1))-->6((6))
graph
9((9))-->6((6))
9((9))-->6R((NIL))
6((6))-->1((1))
6((6))-->1R((NIL))
graph
6((6))-->1((1))
6((6))-->9((9))
依次插入1、9、6,
插入6,1不平衡了,对节点9右旋,再对节点1左旋后平衡。
4种情况
右右-左旋
左左-右旋
左右-先左旋后右旋
右左-先右旋后左旋
AVL 不唯一
AVL-1
graph
0((18))-->0L((7))
0((18))-->0R((22))
0L((7))-->0LL((3))
0L((7))-->0LR((10))
0R((22))-->0RRL((NIL))
0R((22))-->0RRR((26))
0LR((10))-->0LRL((8))
0LR((10))-->0LRR((11))
AVL-2
graph
0((10))-->0L((7))
0((10))-->0R((18))
0L((7))-->0LL((3))
0L((7))-->0LR((8))
0R((18))-->0RL((11))
0R((18))-->0RR((26))
0RR((26))-->0LRL((22))
0RR((26))-->0LRR((NIL))
AVL-2-1
graph
0((10))-->0L((7))
0((10))-->0R((22))
0L((7))-->0LL((3))
0L((7))-->0LR((8))
0R((22))-->0RL((11))
0R((22))-->0RR((26))
0RL((11))-->0LRL((NIL))
0RL((11))-->0LRR((18))
AVL-2-2
graph
0((10))-->0L((7))
0((10))-->0R((22))
0L((7))-->0LL((3))
0L((7))-->0LR((8))
0R((22))-->0RL((18))
0R((22))-->0RR((26))
0RL((18))-->0LRL((11))
0RL((18))-->0LRR((NIL))
红黑树 不唯一
AVL-1 根节点的孙节点有为叶子节点、不为叶子节点存在的情况,所以,不能构成红黑树
AVL-2 可以为红黑树,7、18、22为红,其余黑。
另解
graph
0((7B))-->0L((3B))
0((7B))-->0R((18R))
0L((3B))-->0LL((NIL))
0L((3B))-->0LR((NIL))
0R((18R))-->0RL((10B))
0R((18R))-->0RR((22B))
0RR((22B))-->0RRL((NIL))
0RR((22B))-->0RRR((26R))
0RRR((26R))-->0RRRL((NIL))
0RRR((26R))-->0RRRR((NIL))
0RL((10B))-->0RLL((8R))
0RL((10B))-->0RLR((11R))
0RLL((8R))-->0RLLL((NIL))
0RLL((8R))-->0RLLR((NIL))
0RLR((11R))-->0RLRL((NIL))
0RLR((11R))-->0RLRR((NIL))