已知如下一棵二叉树对应的字符序列(层次遍历序列)为:ABC##EF#G####,其中‘#’表示节点对应的孩子结点为空。现给定一棵二叉树的字符序列,请使用二叉链表构造该二叉树,并输出该二叉树的中序遍历。 c++
时间: 2024-05-11 07:10:06 浏览: 101
二叉树的层次遍历 c++实现
5星 · 资源好评率100%
已知一棵二叉树的字符序列为ABC##EF#G####,其中‘#’表示节点对应的孩子结点为空。现给定一棵二叉树的字符序列,请使用二叉链表构造该二叉树,并输出该二叉树的中序遍历。\n\```++\#inclu<iostream>\#inclu<stdi>\#inclu<string>\#inclu<algorithm>\#inclu<queu>\using namesp s;\s i max=100010;\stru \ char ;\ i ,r;\}[max];\i ,r;\b vis[max];\voi inorder(i r){\ if([r].!=-1) inorder([r].);\ printf(\"% \",[r].);\ if([r].r!=-1) inorder([r].r);\}\i mai(){\ whi(sf(\"%s\",s+1)!=EOF){\ mems(vis,fals,sizeof(vis));\ mems(,-1,sizeof());\ =str(s+1);\ i =;\ for(i i=1;i<=;i++){\ if(s[i]=='#') continu;\ [++].=s[i];\ if(i==1) r=;\ if(i!=1){\ i j=i-1;\ whi(s[j]=='#') j--;\ if(!vis[j]){\ [j].r=;\ vis[j]=ru;\ }\ els\ i k=j;\ whi(s[k]=='#'||vis[k]) k--;\ [k].r=;\ vis[k]=ru;\ }\ }\ i j=i+1;\ whi(s[j]=='#') j++;\ if(j<=){\ [].=j;\ vis[j]=ru;\ }\ }\ inorder(r);\ printf(\"\\\");\ }\ retur ;\}\```\n\
阅读全文