• <数据结构> 树Tree(简单理论)


    一.与树相关的基本概念

    1.树是可以为空树的 即根为空

    2.树的层数 即为当前树的高度

    3.结点的高度 从下往上看 看它下面有几个人

    结点的深度 从上往下看 看它上面有几个人

    4.度 即当前结点有几个孩子 整棵树的度就是最大的某一结点的度

    5.中间结点 即为有孩子的结点

    叶子结点 即为没有孩子的结点

    (一直纠结在一个点上 到底是节点 还是结点 查了一下 对于完全二叉树来说 专业一点 是叶子结点 和非叶子节点 结点就是结束的点 节点还是有相交的线的部分)

    二.二叉树的分类

    1.满二叉树:每层都是满的的二叉树

    2.完全二叉树:只有最后一层有空缺 并且是从右往左连续空缺

    3.排序二叉树BST:也称为二叉搜索树

    BST不允许出现数值相同的结点 每一个值都必须是唯一的

    BST的查找速度相对来说还是挺快挺好 但是当有一种特殊情况变成了链表的话

    它也就失去了这种速度和效率 为了避免这种情况 就出现了平衡二叉树

    4.平衡二叉树ABL:ABL是建立在BST的基础之上的 除此以为

    ABL树中任意结点的左右子高度差不能超过1

    三.二叉树的性质

    1.一个树k层 那么这个树的节点数最多(即为满二叉树)为2^k-1

    2.一个树k层 那么这个树的叶子结点最多为2^(k-1)

    3.设一棵树的总结点个数为S 度为0的结点个数为n0 度为1的为n1 度为2的为n2

    那么S=n0+n1+n2(这个式子不难理解 一棵二叉树总的结点个数 就是度分别为1,2,3的结点总数)

    我们还可以得出S=0*n0+1*n1+2*n2+1(0*n0表示被n0指向的 1*n1即为被n1指向的 n2同理 最后要加1是因为根没有人指向它 所以要加1)

    最后上面两个式子联立就可以得出这样一条结论:n0=n2+1

    即度为0的结点个数比度为2的结点个数多一个

    注:在完全二叉树中 度为1的结点最多有一个 最少有0个

    (PS:以下第4点第5点仅仅适用于完全二叉树

    4.n个结点的完全二叉树 它的高度k=⌊log2n⌋+1(向下取整)

    5.把一颗完全二叉树 按照从上到下 从左到右的顺序开始编号:

    从1开始:编号为i的结点 左孩子编号为2*i 右孩子的编号为2*i+1

    证明左右孩子是当前结点的孩子条件是<=n

    父亲结点的范围是:1~n/2(n为总结点个数)

    从0开始:编号为i的结点 左孩子编号为2*i+1 右孩子的编号为2*i+2

    证明左右孩子是当前结点的孩子条件是<=n-1

    父亲结点的范围是:0~n/2-1(n为总结点个数)

  • 相关阅读:
    欧拉路问题
    树上依赖背包总结
    树状数组的应用
    KMP
    深探树形dp
    再探树形dp
    日常水题
    深入hash
    同一控制下的企业合并,长期股权投资成本与支付账面之间的差额计入资本公积
    资本公积冲减留存收益
  • 原文地址:https://www.cnblogs.com/Aaaaaalei0612/p/9824406.html
Copyright © 2020-2023  润新知