赞
踩
- //C语言实现创建二叉树
-
-
- #include<stdio.h>
- #include<stdlib.h>
- typedef int DataType;
-
- typedef struct Node{
- DataType Data;
- struct Node *lchild, *rchild;
- }BinTNode, *BiTree;
-
- void Create_BinTree(BiTree *T)
- {
- char ch;
-
- scanf("%c",&ch);
- if(ch=='#')
- {
- *T==NULL;
- // return;
- }
- else
- {
- *T=(BinTNode*)malloc(sizeof(BinTNode));
- (*T)->Data=ch;
- printf("\n建立左子树\n");
- (*T)->lchild=NULL;
- (*T)->rchild=NULL;
- Create_BinTree( &((*T)->lchild ) );//建立左子树
- printf("\n建立右子树\n");
- Create_BinTree( &((*T)->rchild ) );//建立右子树
- }
- return ;
- }
-
- void DestroyBitTree(BiTree *T)//销毁二叉树
- {
- if(*T)
- {
- if((*T)->lchild)
- DestroyBitTree( &((*T)->lchild ) );
- if((*T)->rchild)
- DestroyBitTree( &((*T)->rchild) );
-
- free(*T);
- *T=NULL;
- }
-
- printf("\n销毁成功!\n");
- return;
- }
-
-
- //遍历二叉树
- void PreOrder_Traverase(BiTree T)//先序遍历
- {
- if(T==NULL)
- return;
- else
- {
- printf(" %c " , T->Data);
- PreOrder_Traverase(T->lchild);
- PreOrder_Traverase(T->rchild);
- }
-
- }
-
- void InOrder_Traverase(BiTree T)//中序遍历
- {
- if(T==NULL)
- return;
- else
- {
- PreOrder_Traverase(T->lchild);
- printf(" %c " , T->Data);
- PreOrder_Traverase(T->rchild);
- }
-
- }
-
- void PostOrder_Traverase(BiTree T)//后序遍历
- {
- if(T==NULL)
- return ;
- else
- {
- PreOrder_Traverase(T->lchild);
- PreOrder_Traverase(T->rchild);
- printf(" %c " , T->Data);
- }
- }
-
-
- int main()
- {
- BiTree Tree;
- Create_BinTree(&Tree);
-
- printf("\n先序遍历\n");
- PreOrder_Traverase(Tree);
- printf("\n中序遍历\n");
- InOrder_Traverase(Tree);
- printf("\n后序遍历\n");
- PostOrder_Traverase(Tree);
-
-
- DestroyBitTree(&Tree);
-
-
- return 0;
- }

测试:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。