二叉树的创建与递归遍历
2013-11-11 16:31
288 查看
二叉树的创建与递归遍历
#include<stdio.h> #include<stdlib.h> typedef struct Node { char data; struct Node *lch; struct Node *rch; }BiNode, *BiTree; void Creat1(BiTree *T); //二叉树的创建,第一种方法 BiTree Creat2() //二叉树的创建,第二种方法 void Preorder(BiTree T); //先序遍历 void Inorder(BiTree T); //中序遍历 void Postorder(BiTree T); //后续遍历 int main(void) { BiTree T; Creat1(&T); //二叉树的创建,第一种方法 // T = Creat2(); //二叉树的创建,第二种方法 Preorder(T); //先序遍历 printf("\n"); Inorder(T); //中序遍历 printf("\n"); Postorder(T); //后续遍历 return 0; } void Creat1(BiTree *T) //二叉树的创建,第一种方法 { char c; printf("请输入数据:"); c = getchar(); flushall(); if(c != '$') { (*T) = (BiNode *)malloc(sizeof(BiNode)); (*T)->data = c; Creat(&((*T)->lch)); Creat(&((*T)->rch)); } else { (*T) = NULL; } } BiTree Creat2() //二叉树的创建,第二种方法 { BiTree T; char c; printf("请输入数据:"); c = getchar(); flushall(); if(c != '$') { T = (BiNode *)malloc(sizeof(BiNode)); T->data = c; T->lch = Creat(); T->rch = Creat(); } else T = NULL; return T; } void Preorder(BiTree T) //先序遍历 { if(T) { printf("%c",T->data); Preorder(T->lch); Preorder(T->rch); } } void Inorder(BiTree T) //中序遍历 { if(T) { Inorder(T->lch); printf("%c",T->data); Inorder(T->rch); } } void Postorder(BiTree T) //后续遍历 { if(T) { Postorder(T->lch); Postorder(T->rch); printf("%c",T->data); } }
相关文章推荐
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树(2)二叉树创建的3种方法,二叉树的递归遍历,二叉树的销毁
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树的创建与遍历(递归)
- 数据结构(二叉树系列)先序创建三种遍历和求深度(递归实现)
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度
- 二叉树:创建,遍历(递归、非递归、层次)
- 二叉树的创建与遍历(递归版本)
- 实验四、5非递归创建遍历二叉树
- java之二叉树的创建和递归遍历
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度
- C++创建二叉树与遍历(递归与迭代)
- 二叉树的创建与前序中序后序遍历的递归实现
- 递归方法实现二叉树的创建,遍历
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树的前中后层次遍历(递归+非递归)、创建树(数组、前序+中序、中序加后序)
- 二叉树的创建与其递归遍历