二叉树
来源:互联网 发布:杭州贰贰网络 编辑:程序博客网 时间:2024/06/01 09:27
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <malloc.h>#include <stack>using namespace std;typedef struct BiTNode{ char data; struct BiTNode *L,*R;}BiTNode,*BiTree;int CreateBiTree(BiTree &T){ char ch; scanf("%c",&ch); if(ch==' ')T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))exit(-2); T->data=ch; CreateBiTree(T->L); CreateBiTree(T->R); } return 0;} //CreateBiTreeint Visit(char e){ printf("%c ",e); return 0;}int PreOrderTraverse(BiTree T){ if(T) { Visit(T->data); PreOrderTraverse(T->L); PreOrderTraverse(T->R); }}int INorderTraverse(BiTree T)//非递归中序遍历;{ stack<BiTree> s; BiTNode *p=T; while(p||!s.empty()) { if(p) { s.push(p); p=p->L; } else { p=s.top(); s.pop(); Visit(p->data); p=p->R; } } return 0;}int InOrderTraverse(BiTree T){ if(T) { InOrderTraverse(T->L); Visit(T->data); InOrderTraverse(T->R); }}int PostOrderTraverse(BiTree T)//后序遍历{ if(T) { PostOrderTraverse(T->L); PostOrderTraverse(T->R); Visit(T->data); }}int main(){ BiTree T; CreateBiTree(T); printf("树的先序遍历结果:\n"); PreOrderTraverse(T); printf("\n"); printf("树的中序遍历结果:\n"); InOrderTraverse(T); printf("\n"); printf("树的中序非递归遍历结果:\n"); INorderTraverse(T); printf("\n"); printf("树的后序遍历结果:\n"); PostOrderTraverse(T); printf("\n");}
阅读全文
0 0
- 二叉树、二叉堆
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- Hibernate 入门
- 设计模式_责任链模式(20)
- 如何正确地比较两个double类型的数据
- Firefox 恢复关闭的标签页 用什么插件?
- java se--8.多线程-1.基本概念
- 二叉树
- 16.存储过程
- C++程序题总结
- memcpy函数用法
- 基于LIBSVM实现文本分类(python)
- 搭建SolrCloud集群Could not find or load main class org.apache.solr.cloud.ZkCLI
- 约瑟夫,嘿嘿,你被ko了 。还有一点小感悟
- 图像类型的转换
- 观察者模式应用场景实例