03-树3 Tree Traversals Again
来源:互联网 发布:暗黑黎明挂机软件 编辑:程序博客网 时间:2024/04/30 18:16
根据题目:
入栈的顺序即为先序遍历的顺序
出栈的顺序即为中序遍历的顺序
然后根据先序遍历、中序遍历来构建二叉树
AC代码
#include<iostream>#include<stdlib.h>#include<stdio.h>#include<string>#include<stack>using namespace std;typedef struct TreeNode *BinTree;struct TreeNode{ int data; BinTree Left; BinTree Right;};int flag = 1;BinTree CreateBinTree(int *Pre,int *In,int Len){ BinTree T; int i; if(!Len) return NULL; T = (BinTree)malloc(sizeof(struct TreeNode)); T->data = Pre[0]; for(i=0;i<Len;i++) if(Pre[0] == In[i]) break; T->Left = CreateBinTree(Pre+1,In,i); T->Right = CreateBinTree(Pre+i+1,In+i+1,Len-i-1); return T;}void PostOrderPrint(BinTree BT){ if(BT){ PostOrderPrint(BT->Left); PostOrderPrint(BT->Right); if(flag){ flag = 0; printf("%d",BT->data); } else printf(" %d",BT->data); }}int main(){ int PreOrder[30]={0}; int InOrder[30]={0}; int PostOrder[30]={0}; int N,data; int PreIndex = 0,InIndex = 0,PostIndex = 0; stack<int> inputstack; scanf("%d",&N); string str; for(int i=0;i<2*N;i++) { cin>>str; if(str == "Push"){ scanf("%d",&data); PreOrder[PreIndex++] = data; inputstack.push(data); } else if(str == "Pop"){ InOrder[InIndex++] = inputstack.top(); inputstack.pop(); } }// for(int i=0;i<N;i++)// printf("%d ",PreOrder[i]);// printf("\n");// for(int i=0;i<N;i++)// printf("%d ",InOrder[i]); BinTree T = NULL; T = CreateBinTree(PreOrder,InOrder,N); PostOrderPrint(T); printf("\n"); return 0;}
0 0
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- PTA 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again
- 03-树3 Tree Traversals Again (25分)
- 03-树3 Tree Traversals Again (25分)
- 03-树3 Tree Traversals Again (25分)
- 03-树3 Tree Traversals Again (25分)
- 03-树3 Tree Traversals Again (25分)
- 03-树3 Tree Traversals Again (25分)
- Candy
- linux 等待队列
- 【剑指offer-Java版】36数组中的逆序对
- ObjC的initialize和init
- 浏览器窗口大小改变,onresize()事件触发两次
- 03-树3 Tree Traversals Again
- Unsafe与CAS
- Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || e.handler).appl
- GUI中各种布局
- JavaEE 搜索解决问题集合---会不断更新的
- Hadoop2.6.0运行mapreduce之推断(speculative)执行(下)
- AlphaAnimation写在oncreate没效果
- 鸢尾花分类——神经网络详解
- 《Linux C》04 串口编程总结