19-数据结构_树-存储

来源:互联网 发布:tensorflow syntaxnet 编辑:程序博客网 时间:2024/06/02 21:00
存储    

1, 二叉树的存储

    1) 连续存储[完全二叉树]


       面临两个问题

        A. 有效节点存到线性的结构(数组)
        B. 将线性存储的有效结点还原成以前的树
       解决这两个问题
        A. 可通过先(中/后)序转换成线性结构
        B. 用无效结点将二叉树补充成完全二叉树
       综上:
        A. 只有完全二叉树才可以用连续的方式来存储
        B. 存储一般二叉树, 必须要将其补充为完全二叉树
       完全二叉树以连续的方式存储的
        优点:
          某个结点的子结点和父节点的编号都能计算出来.
          因此,判断是否有子结点,查找其父/子节点 非常快.
        缺点:
          非常耗内存

    2) 链式存储

        如图. 很容易理解


2, 一般树的存储

    1) 双亲表示法

        求父节点方便


    2) 孩子表示法

        求子结点方便


    3) 双亲孩子表示法   

        求父结点子结点都很方便


    4) 二叉树表示法[孩子兄弟表示法]

        把一个普通书转换成二叉树来存储
        转换方法:
            保证任意一个结点
              A. 左指针域指向它的第一个孩子
              B. 右指针域指向它的下一个兄弟
            只要满足此条件, 就可把普通树转换成二叉树
            该二叉树一定没有右子树
        

3, 森林的存储

    把森林转换为二叉树存储.

    森林的所有树的根结点相互为兄弟.


原创粉丝点击