孩子兄弟链表构造算法(1)
来源:互联网 发布:java有哪些就业方向 编辑:程序博客网 时间:2024/06/05 14:33
已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度(每层中自左至右输入),试写出构造此树的孩子兄弟链表算法。
脑子里过了一下觉得没问题,没有实测,如有问题望读者及时指出,万分感激。
typedef struct CSNode {ElemType data;struct CSNode *firstchild, *nextsibling;}CSNode, *CSTree;CSNode* SearchTree(CSTree T,Elemtype x){ CSTree temp1,temp2; if(T == NULL)return NULL; if(T->data == x)return T; else{temp1 = SearchTree(T->firstchild,x); temp2 = SearchTree(T->nextsibling,x); if(temp1 != NULL) return temp1; return temp2; }}//在树T中查找xCSNode* CreatCSTreeNode(Elemtype E){CSNode *p = (CSNode*)malloc(sizeof(CSNode));p->data = E;p->firstchild = p->nextsibling = NULL;return p;}//创建孩子兄弟链表结点void BuildCSTree(CSTree &T, Elemtype *node, int *degree, int N){//T为根节点,node为节点序列,degree为对应度数序列,N为链表结点总数 int child = 0/**结点孩子数**/,index = 1/**结点序列指针,指向下一个要加入的结点**/,i = 0/**要加入孩子的结点的指针**/; CSNode *p,*q,*temp; T = CreatCsTreeNode(node[0]); //将树指向该节点,也就是将该节点作为树的根节点 temp = T; //用一个标记指针指向根节点 while(i < N) {//遍历所有要输入的节点的值。q = temp; //将q指针也指向根节点; child = degree[i]; //获取要输入节点它的孩子的个数; for(int j = 0;j < child;j++){//创建子节点 p = CreatCsTreeNode(node[index++]); if(j == 0){ //如果是新一层的第一个节点 q->firstchild = p; //将该节点作为父节点的第一个孩子; q = q->firstchild; //并将q指向新一层的第一个节点; } else{ //如果不是新一层的第一个节点 q->nextsibling = p; //将该节点作为上一节点的下一孩子节点; q = q->nextsibling; //并将q指向它的兄弟,也就是下一个孩子节点; } } i++; //后移,为了统计输入的下一个节点包含有多少个度,并创建相应的孩子; if(i < N)temp = SearchTree(T,node[i]);//查找输入的下一个节点,并指向那个节点,然后才能创建它相应的孩子; }}
阅读全文
0 0
- 孩子兄弟链表构造算法(1)
- 无向图的联通分量和生成树(调用算法7.7、7.8,将无向图 构造为生成森林,并以孩子—兄弟二叉链表存储之)
- 树的孩子兄弟链表实现
- 树的孩子兄弟链表应用
- 设计递归算法,求以“孩子-兄弟链表”表示的度
- 一般树的建立(孩子兄弟链表) 、遍历、深度
- 一般树的建立(孩子兄弟链表) 、遍历、深度
- 树的存储结构(树的二叉链表(孩子—兄弟))
- 构建树(孩子兄弟表示法)
- C++树(兄弟孩子结构实现)
- 孩子兄弟存储结构的几个统计算法实现
- 层次遍历方法建树,用队。实现树与孩子兄弟二叉链表的转化!
- 普通二叉树转二叉链表(孩子兄弟表示法)
- linux创建文件树,孩子兄弟树(或广义表),创建文件树及其访问
- 以孩子兄弟链作为树的存储结构,编写一个求树的高度的递归算法
- strcmp() Anyone? uva+字典树+孩子兄弟建图方向构造字典树
- 数据结构以孩子兄弟链存储的树的高度
- DELPHI 孩子兄弟表示法 (递归实现)
- Linux下JDK的安装
- Reachability网络监听
- Ubuntu16.04中好用的软件(持续更新)
- 逗比三角形 sbtg
- R语言实战(第2版)笔记-第2章 创建数据集
- 孩子兄弟链表构造算法(1)
- Linux安装zookeeper
- 利用Ajax实现分页缓存
- linux 安装搜狗输入法
- java之Map源码浅析
- 通用论坛正文提取算法设计
- op分析
- 用深度学习(CNN RNN Attention)解决大规模文本分类问题
- C#总结---方法的out参数和ref参数