03-树3 Tree Traversals Again
2016-04-26 16:39
483 查看
根据题目:
入栈的顺序即为先序遍历的顺序
出栈的顺序即为中序遍历的顺序
然后根据先序遍历、中序遍历来构建二叉树
AC代码
入栈的顺序即为先序遍历的顺序
出栈的顺序即为中序遍历的顺序
然后根据先序遍历、中序遍历来构建二叉树
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; }
相关文章推荐
- [LintCode] 逆序对 Reverse Pairs
- Leetcode 11. Container With Most Water
- RAID级别与规范
- RAID级别与规范
- Chain of Responsibility模式
- rails 提供下拉框select和select_tag用法(附加form_for, form_tag提交表单的内容)
- net::ERR_PROXY_CONNECTION_FAILED
- 异常:HibernateOptimisticLockingFailureException StaleStateException
- Debug Assertion Failed! Expression: _pFirstBlock == pHead
- 在CI框架中如何发送email?
- SendKeys.SendWait
- LightOJ 1138 Trailing Zeroes (III)
- View结合组策略进行应用程序下发
- [LintCode] Reverse Pairs 翻转对
- raise RuntimeError("autoconf error") RuntimeError: autoconf error
- MailMessage+SmtpClient 发送邮件
- DAY6:leetcode #11 Container With Most Water
- linker command failed with exit code 1 (use -v to see invocation)错误调试
- cpu_relax( )-----对自选循环等待(spin-wait loops)操作的优化【转】
- mac os 终端提示 you have new mail