C++ 二叉树遍历(三种遍历的递归实现)
2011-12-01 20:14
567 查看
//二叉树遍历 //作者:nuaazdh //时间:2011年12月1日 #include<stdio.h> #include<stdlib.h> //二叉树结点结构 typedef struct BiTNode{ char ch; //结点数据 struct BiTNode *lchild; //左孩子 struct BiTNode *rchild; //右孩子 }BiTNode,*BiTree; void AddBiTree(BiTree ,BiTNode *);//创建二叉树 void PreOrderTraverse(BiTNode *); //前序遍历 void InOrderTraverse(BiTNode *); //中序遍历 void PostOrderTraverse(BiTNode *); //后序遍历 void main() { char ch;//结点数据 BiTree T,p;//树T,和临时树p printf("请输入结点内容(以空格未结束标识):"); scanf("%c",&ch);//读入用户输入 T=NULL; while(ch!=' '){//判断输入 //创建新结点 if(p=(BiTNode *)malloc(sizeof(BiTNode))){ p->ch = ch; p->lchild = NULL; p->rchild = NULL; } else { printf("内存分配出错.\n"); exit(0); } if(T==NULL) T=p; else AddBiTree(T,p); scanf("%c",&ch);//读入用户输入 } //输出遍历结果 printf("前序遍历:\n"); PreOrderTraverse(T); printf("\n中序遍历:\n"); InOrderTraverse(T); printf("\n后序遍历:\n"); PostOrderTraverse(T); } //创造二叉树 void AddBiTree(BiTree T,BiTree p) { if((p->ch <= T->ch)&&(T->lchild!=NULL)) AddBiTree(T->lchild,p); else if((p->ch <= T->ch)&&(T->lchild==NULL)) T->lchild=p; else if(T->rchild!=NULL) AddBiTree(T->rchild,p); else T->rchild=p; } //前序遍历 void PreOrderTraverse(BiTree T) { if(T){ printf("%c ",T->ch); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } //中序遍历 void InOrderTraverse(BiTree T) { if(T){ InOrderTraverse(T->lchild); printf("%c ",T->ch); InOrderTraverse(T->rchild); } } //后序遍历 void PostOrderTraverse(BiTree T) { if(T){ PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c ",T->ch); } }
结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/12/5946706dc5e44e8de415836e8bc1537a.gif)
相关文章推荐
- 二叉树遍历(前中后序递归、非递归遍历,层次遍历,C++实现)
- 二叉树的前序、中序、后序三种遍历的六种实现方式(递归、非递归)(C++)
- C++实现二叉树的建立和三种递归遍历
- 数据结构学习之-二叉树的三种递归遍历C++实现及相关应用
- 详细讲解二叉树三种遍历方式的递归与非递归实现
- C++实现二叉树的递归遍历与非递归遍历
- 二叉树的遍历 递归 非递归 C++ 实现
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- 二叉树遍历(递归实现,前序,中序,后序遍历)
- C++实现——二叉树的四种遍历(非递归写法)
- 三种二叉树遍历的非递归实现
- 二叉树三种遍历(递归及非递归)的实现
- 二叉树的三种遍历方式(递归与非递归详细实现)
- 二叉树三种遍历方式 递归与非递归实现 总结
- 树的三种遍历(递归与非递归实现)
- 二叉树遍历,已知前序遍历与中序遍历,求后续遍历 使用java(递归方式)实现
- 二叉树 前中后序遍历非递归版本 C++实现
- c++实现二叉树层序、前序创建二叉树,递归非递归实现二叉树遍历
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- c++模板实现二叉树,线索化,线索化遍历,非递归遍历及一些基本操作