经营类网站备案,个人做网站郊游的英,wordpress远程发布文章,网站优化外链怎么做作业要求
以如下图为例#xff0c;完成树的遍历#xff1a; 1、利用孩子兄弟表示法的存储结构 2、利用先根序列创建树 3、先根遍历树 4、后根遍历树
思考
预期的结果应该为#xff1a;
1、先根创建树时需要输入的数据为#xff1a; A B E 0 F 0 0 C 0 D G 0 0 0 0 2、…作业要求
以如下图为例完成树的遍历 1、利用孩子兄弟表示法的存储结构 2、利用先根序列创建树 3、先根遍历树 4、后根遍历树
思考
预期的结果应该为
1、先根创建树时需要输入的数据为 A B E 0 F 0 0 C 0 D G 0 0 0 0 2、先根遍历的输出结果为 A B E F C D G 3、后根遍历的输出结果为 E F B C G D A 代码实现
#include stdio.h
#include malloc.h// 创建结构体
struct TreeNode{char data;struct TreeNode *firstchild;struct TreeNode *nextsibling;
};//先根创建孩子兄弟链表
void CreatTree(struct TreeNode **T) {char ch;scanf(\n %c, ch);if (ch 0) {*T NULL;}else {*T (struct TreeNode *) malloc(sizeof(struct TreeNode));(*T)-data ch;CreatTree(((*T)-firstchild)); // 创建第一个孩子结点CreatTree(((*T)-nextsibling)); // 创建右兄弟结点}
}//先根遍历
void RootFirst(struct TreeNode *T){struct TreeNode *p;if(T!NULL){printf(%3c,T-data); //打印根结点p T-firstchild; //指向根的第一个孩子结点while (p){RootFirst(p);p p-nextsibling; //指向下一个孩子结点即当前结点的右兄弟结点}}
}// 后根遍历
void RootLast(struct TreeNode *T){if (T ! NULL) {struct TreeNode* Fchild T-firstchild; //获取第一棵子树while (Fchild ! NULL) { //依次访问每一棵子树RootLast(Fchild); //后序访问子树Fchild Fchild-nextsibling; //访问另一棵子树}printf(%3c, T-data); //访问根节点}}int main(){struct TreeNode *t;printf(***************先根创建树***************\n);printf(请输入结点树的数据);CreatTree(t);printf(***************先根遍历树***************\n);printf(先根遍历结点结果);RootFirst(t);printf(\n***************后根遍历树***************\n);printf(后根遍历结点结果);RootLast(t);
}运行结果