二叉树的建立及遍历
来源:互联网 发布:java 静态单例模式 编辑:程序博客网 时间:2024/05/28 11:50
假设二叉树为:
a
b c
d e
因为程序中要知道叶子结点(终点),所以要将上面的二叉树变成扩展二叉树 (把叶子结点的孩子补成#, 用作标记), 扩展后就变成了:
a
b c
# d # e
# # # #
那么,在输入的时候,需要输入: ab#d##C#e## (注意,输入后,按enter键即可) ,程序如下:
#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct Node{ ElemType data; Node *Lchild,*Rchild;} BiTNode,*BiTree;BiTree CreateBiTree();//建立二叉树void PreOrder(BiTree T);//先序void InOrder(BiTree T);//中序void PostOrder(BiTree T);//后序int main(void){ BiTree root=CreateBiTree(); printf("先序:\n"); PreOrder(root);//先序 printf("\n"); printf("中序:\n"); InOrder(root);//中序 printf("\n"); printf("后序:\n"); PostOrder(root);//后序 printf("\n"); return 0;}BiTree CreateBiTree()//建立二叉树{ ElemType x; BiTree T; scanf("%c",&x); if(x=='#') T=NULL; else { T=(BiTree)malloc(sizeof(BiTNode)); T->data=x; T->Lchild=CreateBiTree(); T->Rchild=CreateBiTree(); } return T;}void PreOrder(BiTree T)//先序{ if(T!=NULL) { printf("%c ",T->data); PreOrder(T->Lchild); PreOrder(T->Rchild); }}void InOrder(BiTree T)//中序{ if(T!=NULL) { InOrder(T->Lchild); printf("%c ",T->data); InOrder(T->Rchild); }}void PostOrder(BiTree T)//后序{ if(T!=NULL) { PostOrder(T->Lchild); PostOrder(T->Rchild); printf("%c ",T->data); }}
阅读全文
0 0
- 二叉树 的建立及遍历 过程
- 二叉树的建立及递归遍历
- 二叉树的建立及遍历
- 二叉树的建立及遍历实现
- 线索二叉树的建立及遍历
- 二叉树的建立,及相关遍历
- 二叉树的建立及递归遍历
- 二叉树的存储、遍历及建立
- 二叉树的建立及递归遍历
- 二叉树的建立及前中后序遍历
- 二叉树的建立及遍历
- 二叉树的建立及遍历
- 二叉树的建立、遍历、深度、高度及层次遍历
- 二叉树的建立及遍历(二叉树)
- 今天早上写的二叉树的建立及遍历
- 数据结构 树 二叉树的建立及遍历 C语言版
- 二叉树的先序建立及先序遍历:
- 二叉树的建立删除及三种遍历实现
- 50 C语言模拟密码输入(显示星号)
- 自定义歌词展示控件
- codeforces 417
- IDEA中使用JDBC
- Python中List和Tuple类型
- 二叉树的建立及遍历
- 485. Max Consecutive Ones
- 腾讯直播——推流SDK(Android)
- python操作Mongodb数据库
- HDU 4574 Bombs DFS
- Cef3:vs2015开发环境搭建
- 模拟题 I
- 35. Search Insert Position
- c++邻接矩阵存储图