递归建立普通二叉树两种方式遍历
来源:互联网 发布:2017淘宝违规考试答案 编辑:程序博客网 时间:2024/06/05 01:11
#include<bits/stdc++.h>using namespace std;struct BinNode{char data;BinNode* lchild;BinNode* rchild;};int CreateBinTree1(BinNode* &T)//建立时候按先序建立,先画出来对照先序输入中间无空格{char data;data=getchar();if(data=='#')T=NULL;else{T=new BinNode();T->data=data;CreateBinTree1(T->lchild);CreateBinTree1(T->rchild);}return 0;}void Visit(BinNode* &T){if(T->data!='#')cout<<T->data<<" ";}void PreOrder(BinNode* &T){if(T!=NULL){Visit(T);PreOrder(T->lchild);PreOrder(T->rchild);}}void MidOrder(BinNode* &T){if(T!=NULL){MidOrder(T->lchild);Visit(T);MidOrder(T->rchild);}}void PostOrder(BinNode* &T){if(T!=NULL){PostOrder(T->lchild);PostOrder(T->rchild);Visit(T);}}void PreOrder2(BinNode* &T){stack<BinNode*> stack;BinNode* p=T;while(p||!stack.empty()){if(p!=NULL){stack.push(p);cout<<p->data<<" ";p=p->lchild;}else{p=stack.top();stack.pop();p=p->rchild;}}}void MinOrder2(BinNode* &T){BinNode* p=T;stack<BinNode*> stack;while(p||!stack.empty()){if(p!=NULL){stack.push(p);p=p->lchild;}else{p=stack.top();stack.pop();cout<<p->data<<" ";p=p->rchild;}}}struct Bin{BinNode* node;char flag;};void PostOrder2(BinNode* &T){stack<Bin*> stack;BinNode* p=T;Bin* b;while(p!=NULL||!stack.empty()){while(p!=NULL){b=new Bin;b->node=p;b->flag='L';stack.push(b);p=p->lchild;}while(!stack.empty()&&(stack.top())->flag=='R'){b=stack.top();stack.pop();cout<<b->node->data<<" ";}if(!stack.empty()){b=stack.top();b->flag='R';p=b->node;p=p->rchild;}}}int main(){BinNode* T=NULL;CreateBinTree1(T);PreOrder(T);cout<<endl;MidOrder(T);cout<<endl;//char* ch="111";//cout<<*ch;PostOrder(T);cout<<endl;PreOrder2(T);cout<<endl;MinOrder2(T);cout<<endl;PostOrder2(T);return 0;}
阅读全文
0 0
- 递归建立普通二叉树两种方式遍历
- (C++)二叉树的建立与递归方式遍历
- 二叉树 普通的 建立和遍历
- 二叉树建立、递归、非递归遍历
- 二叉树三种递归遍历方式
- 二叉树建立及递归遍历
- 二叉树的建立及递归遍历
- 递归二叉树的建立于遍历
- 递归二叉树建立、遍历、删除、打印
- 递归建立和遍历二叉树等
- 二叉树的建立及递归遍历
- 二叉树的建立及递归遍历
- 二叉树的递归建立和遍历
- 二叉树的建立和三种遍历的递归方式
- 二叉树建立 ---层次遍历方式
- c++ 二叉树 的递归建立和递归遍历
- 二叉树建立以及递归、非递归遍历
- 二叉树的建立和遍历(递归、非递归)
- 单链表环相关问题
- JAVA工程师有没有前途?
- 连续点击两次退出程序
- Hibernate 一级缓存(session级别)、二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题
- oracle 与 mysql 中的函数总结
- 递归建立普通二叉树两种方式遍历
- 第四周 项目2-建设“单链表”算法库
- 让你的表格活起来-excel隔行彩条的应用
- 6-1 带头结点的单链表就地逆置
- RxJava学习笔记(一)
- 2017.9.22. 字典树
- JAVA基础集合-去除List集合中的重复值
- nginx配置账号访问
- jquery选择器