【C++】满二叉树问题
生活随笔
收集整理的這篇文章主要介紹了
【C++】满二叉树问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
給出一棵滿二叉樹的先序遍歷,有兩種節點:字母節點(A-Z,無重復)和空節點(#)。要求這個樹的中序遍歷。輸出中序遍歷時不需要輸出#。
滿二叉樹的層數n滿足1<=n<=5。Sample Input:
ABC#D#ESample Output:
CBADE
*/
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
const int M=1024;
char data[M];
int layer;struct node
{char data;struct node *l;struct node *r;
};void build(node * & t,int l)
{if(l>layer)return ;int i=0;while(data[i]=='\0')i++;char tc=data[i];//cout<<i<<endl<<tc<<endl;
data[i]='\0';if(tc=='#'){t=NULL;return ;}t=new node();t->data=tc;build(t->l,l+1);build(t->r,l+1);
}void display(node *t)
{if(t==NULL)return ;display(t->l);printf("%c",t->data);display(t->r);
}int main()
{/*printf("%d\n",(int)(log(8)/log(2)));printf("%f\n",(log(7)/log(2)));*/memset(data,'\0',sizeof(data));while(scanf("%s",&data)){//printf("%s\n",data);int n=strlen(data)+1;/*if(log(n)/log(2)>(int)(log(n)/log(2)))layer=(int)(log(n)/log(2))+1;else*/layer=(int)(log(n)/log(2));//printf("%d\n",layer);node *tree;build(tree,1);display(tree);}return 0;
}
?
?
tz@HZAU
2019/3/13
轉載于:https://www.cnblogs.com/acm-icpcer/p/10525989.html
總結
以上是生活随笔為你收集整理的【C++】满二叉树问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcood学习笔记-58-最后一个
- 下一篇: Javascript执行上下文和执行栈