数据结构2

  • 一种 元素之间存在一对多关系的数据结构,常用于表示数据结构,辅助排序,查找,族谱关系,组织关系,。一般根在上,支在下(倒悬树)
  1. 树的相关术语

    • 根结点:树的最顶层元素,有且仅有一个
    • 子结点:结点的下一层元素也叫孩子结点
    • 双亲结点:上一层元素也叫父结点
    • 兄弟结点:有同一个父节点的结点,处在同一层
    • 叶子结点:树型的最底层,没有子节点的结点,一般处于树的最底层
    • 树的高度 :树的层数
    • 结点的度 :一个结点的子结点的数量
    • 密度 :树的结点个数,包括根结点
    • 结点 :一个元素就是一个结点
  2. 普通树:子节点的数量不确定 没有限制

    • 顺序存储
    下标数据父节点下标第一个子节点下表最后一个
    0ROOT-1(根)11
    1A0-1-1
    1. 对元素结点的存储顺序没有要求 下标 结点(存的数据) 双亲(上一层下标 顶层-1) 0 A -1
    2. 从上到下,从左到右
      • 下标
      • 结点(存的数据)
      • 双亲(上一层下标 顶层-1)
      • 第一个孩子的下标(没有为-1) 0 A -1 1
    3. 从上到下,从左到右
      • 下标
      • 结点(存的数据)
      • 双亲(上一层下标 顶层-1)
      • 第一个孩子的下标(没有为-1)
      • 最后一个孩子的下标(没有为-1) 0 A -1 1 2
    • 链式存储
        a——b——c——d//a是根,bcd是a的子节点
        |//e是b的子节点
        e
        typedef struct Node
        {
            TYPE data;
            Node* brother;
            Node* child;
            }Node;
    

二叉树:子节点不多于两个

  1. 相关术语:

    • 遍历:

      • 前序:根,左,右
      • 中序:左,根,右
      • 后序:左,右,根
      • 层序:从上到下,从左到右
    • 根据遍历顺序重构二叉树:

      • 前,中:已知前序和中序构建二叉树
      • 后,中:已知后序和中序构建二叉树
      • 层序:空位置用#表示,相当于满二叉树
    • 普通二叉树:对二叉树的结点没有数量及位置上的要求

    • 满二叉树:一定有两个孩子 pow(2,层数-1)2的n-1次

    • 完全二叉树:对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树

      • 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
    • 有序二叉树:左子树的所有结点都比根结点小,右子树都比根结点大

    • 平衡/有序/二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树(有序二叉树前提)

  2. 顺序存储

    • n = 2^(k-1) n表示k层节点数
    • i i2+1 i2+2
      • 第i个节点
      • 第i个节点的左节点
      • 第i个节点的右节点
  3. 二叉树的相关计算

    • n0表示0个子节点的节点个数
    • n1表示1个子节点的节点个数
    • n2表示2个子节点的节点个数
    • k为所有节点个数
    n0 + n1 + n2 = k
    2*n2 + n1 + 1 = k
    n2 + 1 = n0
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值