获取给定结点第个孩子的操作算法实现: int Child( childTree T, int node, int i) if(node<node>=T n)return-2; p=Titem node. firstchild; j=1; while(p&&j=ii p=p->next; j++; if (p) return-2; else return p->child 请单赤鼠标左键换页!
获取给定结点第i个孩子的操作算法实现: int Child(ChildTree T, int node, int i) { if (node<0||node>=T.n) return -2; p=T.item[node].firstchild; j=1; while (p&&j!=i) { p=p->next; j++;} if (!p) return -2; else return p->child; }
3.孩子兄弟表示法 孩子兄弟表示法也是一种链式存储结构。它通过 描述每个结点的一个孩子和兄弟信息来反映结点之间 的层次关系,其结点结构为: firstchild Item nexts ibl ng 其中, firstchild为指向该结点第一个孩子的指针, nextsibling为指向该结点的下一个兄弟,item是数据元素 内容。举例: 请单鼠标左键换页!
3. 孩子兄弟表示法 孩子兄弟表示法也是一种链式存储结构。它通过 描述每个结点的一个孩子和兄弟信息来反映结点之间 的层次关系,其结点结构为: firstchild item nextsibli ng 其中,firstchild为指向该结点第一个孩子的指针, nextsibling为指向该结点的下一个兄弟,item是数据元素 内容。举例:
T A BC+D E十^F G 图55 请单鼠标左键换页!
图 5-5 ^ H ^ I ^ J ^ ^ E ^ F ^ G ^ B ^ C D ^ A ^ T
在C语言中,这种存储形式定义如下: typedef struct CSNodet Entry Type item; struct CSNode*firstchild, "nextsibling; JCSNode, STRee, void AllChild (stree t, stree p ∥输出树中p指针所指结点的所有孩子信息 g=p->fisrtchild; while(ai printf((“%c”,q-→item);q=q-> nextsibling; 请单鼠标左键换页!
在C语言中,这种存储形式定义如下: typedef struct CSNode{ EntryType item; struct CSNode *firstchild,*nextsibling; }CSNode,*CSTree; void AllChild(CSTree T, CSTree p) //输出树中p指针所指结点的所有孩子信息 { q=p->fisrtchild; while (q) { printf(“%c”,q->item); q=q->nextsibling; } }
5.2二叉树 52.1二叉树的定义和基本运算 1.定义 定义:二叉树是另一种树形结构。它与树形结构 的区别是: (1)每个结点最多有两棵子树; (2)子树有左右之分。 叉树也可以用递归的形式定义。即:二叉树是 n(n≥0)个结点的有限集合。当n=0时,称为空二叉 树;当n>0时,有且仅有一个结点为二叉树的根,其余 结点被分成两个互不相交的子集,一个作为左子集, 另一个作为右子集,每个子集又是一个二叉树 请单鼠标左键换页!
5.2 二叉树 5.2.1 二叉树的定义和基本运算 1. 定义 定义:二叉树是另一种树形结构。它与树形结构 的区别是: (1)每个结点最多有两棵子树; (2)子树有左右之分。 二叉树也可以用递归的形式定义。即:二叉树是 n(n≥0)个结点的有限集合。当n=0时,称为空二叉 树;当n>0时,有且仅有一个结点为二叉树的根,其余 结点被分成两个互不相交的子集,一个作为左子集, 另一个作为右子集,每个子集又是一个二叉树