zoukankan      html  css  js  c++  java
  • 高级树,AVL树和红黑树

    树 (Tree) 二叉树(Binary Tree) 二叉搜索树(Binary Search Tree)

    tree:

    图片说明
    Binary Tree:

    图片说明

    Binary Search Tree:

    二叉搜索树,也称二又搜索树、有序二叉树( Ordered Binary Tree)、排序二又树(Sorted Binary Tree),是指一棵空树或者具有下列性质的二叉树:

    1. 左子树上所有结点的值均小于它的根结点的值
    2. 右子树上所有结点的值均大于它的根结点的值;
    3. 以比类推:左、右子树也分别为二叉査找树。(这就是重复性!)

    中序遍历:升序排列

    图片说明
    二叉搜索树 在极端情况下 节点都在一边 会影响搜索效率 解决办法:保证二维维度—> 左右子树结点平衡(recursively)

    AVL树

    1. 发明者 G M. Adelson-velsky和 Evgeni Landis
    2. Balance Factor(平衡因子)是它的左子树的高度减去它的右子树的高度(有时相反)。balance factor= {-1, 0,1}
    3. 通过旋转操作来进行平衡(四种)

    图片说明

    旋转操作

    1. 左旋
    2. 右旋
    3. 左右旋
    4. 右左旋

    左旋

    图片说明

    右旋

    图片说明

    左右旋

    图片说明

    图片说明
    右左旋

    图片说明

    图片说明

    带有子树的旋转

    图片说明
    参考动画: https://zhuanlan.zhihu.com/p/63272157

    图片说明

    红黑树

    红黑树是一种近似平衡的二叉搜索树(Binary Search Tree),它能够确保任何一 个结点的左右子树的高度差小于两倍。具体来说,红黑树是满足如下条件的二叉 搜索树:

    • 每个结点要么是红色,要么是黑色
    • 根结点是黑色 •
    • 每个叶结点(NIL结点,空结点)是黑色的。
    • 不能有相邻接的两个红色结点 •
    • 任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。

    图片说明

    性质

    从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。

  • 相关阅读:
    递增三元子序列
    Linux sed 命令
    linux shell中$0,$?,$!等的特殊用法
    ansible-playbook使用
    Linux下通过crontab命令来实现定时任务
    iperf网络性能测试
    OpenStack接口测试工具rally/tempest环境搭建及使用
    Jenkins配置slaver节点
    微信小程序跳转外部链接(h5页面)以及数据交互
    Echarts 系列之折线图、柱状图相关配置
  • 原文地址:https://www.cnblogs.com/zhaohaiyu/p/13746040.html
Copyright © 2011-2022 走看看