数据结构(六)

-- 定义
        - 有且仅有一个根结点
        - 当n > 1是,其余结点可分为子树
    - 树的抽象数据类型
        ADT Tree {
            D:具有相同特性的数据元素的集合
            R:。。。
            P
                InitTree(&T)
                DestroyTree(&T)
                CreateTree(&T, definition)
                ClearTree(&T)
                TreeEmpty(T)
                TreeDepth(T)
                Root(T)
                Value(T, cur_e)
                Assign(T, cur_e, value)
                Parent(T, cur_e)
                LeftChild(T, cur_e)
                RightChild(T, cur_e)
                InsertChild(&T, &p, i, c)
                DeleteChild(&T, &p, i)
                TraverseTree(T, visit())
        }ADT Tree
    - 森林:n棵不相交的树的集合
- 二叉树
    - 定义:每个结点至多只有2个结点的树
    - 二叉树的抽象数据类型
        ADT BinaryTree {
            InitBiTree(&T)
                DestroyBiTree(&T)
                CreateBiTree(&T, definition)
                ClearBiTree(&T)
                BiTreeEmpty(T)
                BiTreeDepth(T)
                Root(T)
                Value(T, cur_e)
                Assign(T, cur_e, value)
                Parent(T, cur_e)
                LeftChild(T, cur_e)
                RightChild(T, cur_e)
                InsertChild(&T, &p, i, c)
                DeleteChild(&T, &p, i)
                PreOrderTraverse(T, visit())
                InOrderTraverse(T, visit())
                PostOrderTraverse(T, visit())
                LevelOrderTraverse(T, visit())
        }ADT BinaryTree
    - 二叉树的特殊形态
        - 满二叉树:每一层都达到最大结点数的二叉树
        - 完全二叉树:从左到右,从上到下连续编号与约定编号一一对应的二叉树
    - 二叉树的性质
        - 第i层上至多有2^(i-1)个结点
        - 深度为k的二叉树至多有2^(k)-1个结点
        - 叶子节点数 = 有2个儿子的节点数 + 1(n0 = n2 + 1- 有n个结点的完全二叉树的的深度为floor(log(2)n)+1
    - 二叉树的存储结构
        - 顺序存储结构
        - 链式存储结构
    - 线索二叉树:将空指针域按照一种顺序指向该结点的前驱或后继形成的二叉树
    - 赫夫曼树
        - 又称最优二叉树
        - 树的带权路径之和最小的二叉树
        - 赫夫曼编码
原文地址:https://www.cnblogs.com/qq188380780/p/11218888.html