数据结构_树_相关定义和解释

来源:互联网 发布:关于在义乌外贸数据 编辑:程序博客网 时间:2024/06/05 10:28

树:树n(n >= 0)个结点的有限集。在任意一棵非空树(n != 0)中:①有且仅有一个根结点②其余结点可分成m个互不相交的有限集。

度:结点拥有的子树的个数称为结点的度。

结点度为0的结点

终端结点或分支结点度不为0的结点

树的度:树内各结点的最大值

孩子结点结点子树的根结点

双亲结点相对于孩子结点的上不节点

结点的层次:从根开始定义。根为第一层,根的孩子我第二层,以此类推

树的深度:即树的总层次

树的存储结构:双亲表示法、孩子表示法、孩子兄弟表示法

双亲表示法:

#define MAX_TREE_SIZEtypedef struct Node//节点结构{       int data;   //结点数据       int parent; //结点双亲       int rignt;  //右兄弟域}PNode;typedef struct Tree//树的结构{       PNode nodes[MAX_TREE_SIZE];       int r;//跟节点的位置,一般为-1       int n;//节点的个数}PTree;
孩子表示法:

#define MAX_TREE_SIZEtypedef struct Node{      int child;     //孩子节点数据      Node *next;    //指向下一个孩子节点的指针}*PNode;typedef stuct Gen//表头结构{      int data;      PNode firstChild;}CBox;typedef struct Tree{      CBox nodes[MAX_TREE_SIZE];      int r;      int n;}CTree;
另外,孩子表示法还可以同双亲表示法相互结合,方法很简单:只需要在Gen结构体中添加“int parent;”即可表示,这样就能比较方便的找到给定节点的双亲节点,表示方法为“双亲孩子表示法”。
孩子兄弟表示法:

typedef struct CSNode{      int data;      CSNode *firstchild;//指向当前节点的第一个孩子结点      CSNode *rightsib;  //指向当前节点的兄弟结点};
二叉树:是n(n > 0)个结点的有限结合,该集合可以为空集,或者非空集,但是每个节点最多有两棵子树(即树的度不大于2),左右子树是有序的不可随意颠倒,即使某一节点只有一颗子树,也要区分左子树还是右子树。

特殊二叉树:包括斜树、满二叉树、完全二叉树等。
斜树:每一层只有一个节点,结点的个数与二叉树的深度相同。

满二叉树:是叶子只能出现在最后一层,非叶子结点度一定为2,在同样深度的二叉树中,满二叉树的结点数最多,叶子数最多。

完全二叉树:满二叉树一定是完全二叉树,而完全二叉树不一定是满二叉树。二叉树即在满二叉树的基础上,按照从上往下,从左往右进行编号,不存在空闲编号。




0 0
原创粉丝点击