• 数据结构-树(上)


    • 树的表示:(法1)结构+链表

    *优点:结构统一,易于处理;

    *缺点:结构的统一会造成空间上的浪费,比如3n个指针域,实际只需n-1个指针域;

    • 树的表示:(法2)儿子-兄弟表示法(二叉树)

    *形式:1个结点2个指针,分别指向第1个儿子和下1个兄弟;

    *优点:结构统一,且空间浪费不大[为2n-(n-1)];

    *二叉树在树的研究中是最重要且最主要的树;

    • 二叉树的定义
    typedef struct TNode *Position;
    typedef Position BinTree;/*二叉树类型*/
    struct TNode /*树结点定义*/ 
    {
        ElementType Data;      /*结点数据*/
        BinTree Left;        /*指向左子树*/
        BinTree Right;        /*指向右子树*/     
    };

    *度为2的树,且该树有左右之分;

    *特殊的二叉树:

    斜二叉树:左斜或右斜,一条直线的链;

    完美二叉树(满二叉树):所有结点皆满;

    完全二叉树:(类似于满二叉树)上至下,左至右编号,且允许不满,且必须从右边开始缺子树;

    • 二叉树的重要性质:

    *二叉树第i层的最大结点数:2^(i-1);

    *深度为K的二叉树的最大结点总数(完美二叉树):[2^k]-1;

    *n0:叶结点的个数,n1:度为1的非叶结点的个数,n2:度为2的非叶结点的个数,满足:n0=n2+1;

    • 二叉树的操作集:

    (1)判断BT是否为空;

    (2)按顺序遍历;

    *先序遍历:根、左子树、右子树

    *中序遍历:左子树、根、右子树

    *后序遍历:左子树、右子树、根

    *层次遍历:从上到下、从左到右

    (3)创建一个二叉树;

    • 二叉树的存储结构:

    (1)完全二叉树(从上到下、从左到右编号)【数组存储】:

    *非根节点的父结点的序号为i/2往下取整;

    *结点的左孩子:2i;(若2i<=n)

    *结点的右孩子:2i+1;(若2i+1<=n)

    (2)一般的二叉树

    (可以采用上面这种顺序结构,但是会造成空间的浪费)【数组存储】

    (链表存储一般二叉树,避免浪费空间)【链表存储】

     

    hello world~
  • 相关阅读:
    veil-evasion免杀处理
    对程序"加料"
    堆栈溢出
    ICMP隧道 ptunnle
    socat流量操控
    DNS隧道 iodns
    dns隧道 dns2tcpd
    ssh X协议转发
    ssh动态端口转发
    ssh远程端口转发
  • 原文地址:https://www.cnblogs.com/Bran-don/p/10452834.html
Copyright © 2020-2023  润新知