获取给定结点第个孩子的操作算法实现: int Child(childTree T, int node, int i) if (nodeconode>=Tn) return -2; p=Titem node firstchild; j=1; while(p&&j!=i)(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 em nextsibli g 其中, firstchild为指向该结点第一个孩子的指针, nextsibling为指向该结点的下一个兄弟,item是数据元素 内容。举例: 请单市鼠标左键换页
3. 孩子兄弟表示法 孩子兄弟表示法也是一种链式存储结构。它通过 描述每个结点的一个孩子和兄弟信息来反映结点之间 的层次关系,其结点结构为: firstchild item nextsibli ng 其中,firstchild为指向该结点第一个孩子的指针, nextsibling为指向该结点的下一个兄弟,item是数据元素 内容。举例:
T A BC+D F ∠G^ 图5-5 请单市鼠标左键换页
图 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指针所指结点的所有孩子信息 q=p->fisrtchild while(at 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二叉树 5.2.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时,有且仅有一个结点为二叉树的根,其余 结点被分成两个互不相交的子集,一个作为左子集, 另一个作为右子集,每个子集又是一个二叉树