树的孩子兄弟节点
#include <iostream> using namespace std; typedef struct CSNode { char data; struct CSNode * firstchild , * nextsibling ; }* CSTree; //==================================================== #define MAXSIZE 10 CSTree q[MAXSIZE]; int count=0; //初始化 void init_cstree(CSTree &tree) { tree->firstchild = NULL; tree->nextsibling = NULL; } //创建树 void creat_cstree(CSTree &T) { FILE *fin= fopen ( "树的孩子兄弟表示法.txt" , "r" ); char fa= ' ' ,ch= ' ' ; for ( fscanf (fin, "%c%c" ,&fa,&ch); ch!= '#' ; fscanf (fin, "%c%c" ,&fa,&ch) ) { CSTree p=(CSTree) malloc ( sizeof (CSTree)); init_cstree(p); p->data=ch; q[++count]=p; if ( '#' == fa) T=p; else { CSTree s = (CSTree) malloc ( sizeof (CSTree)); int i; for (i=1;i<=MAXSIZE;i++) { if (q[i]->data == fa) { s=q[i]; break ; } } if (! (s->firstchild) ) //如果该双亲结点还没有接孩子节点 s->firstchild=p; else //如果该双亲结点已经接了孩子节点 { CSTree temp=s->firstchild; while (NULL != temp->nextsibling) { temp=temp->nextsibling; } temp->nextsibling=p; } } } fclose (fin); } //前序遍历 void print_cstree(CSTree &tree) { cout<<tree->data<< " " ; if (tree->firstchild!=NULL) print_cstree(tree->firstchild); if (tree->nextsibling!=NULL) print_cstree(tree->nextsibling); } //输出树中所有从根到叶子结点的路径的算法 //void allpath_tree() int main() { CSTree cstree; cstree=(CSTree) malloc ( sizeof (CSTree)); init_cstree(cstree); creat_cstree(cstree); //输出树 print_cstree(cstree); cout<<endl; return 0; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步