首页 > 代码库 > c语言(二叉树的操作)
c语言(二叉树的操作)
#include "stdio.h" #include "malloc.h" #include "stdlib.h" typedef struct BTNode { int data; struct BTNode *Lchild,*Rchild; }BTree; //初始化 BTree * Ini_BTNode() { BTree *bt ; int a; bt=(BTree *)malloc(sizeof(BTree)); printf("输入根节点:(0表示空树)\n"); scanf("%d",&a); if(a==0) { printf("这是空树!"); exit(0); } bt->data=http://www.mamicode.com/a; bt->Lchild=NULL; //左子树节点 bt->Rchild=NULL; //右子树节点 return bt; } creat_BiTree(BTree *bt)//输入左子树 { int a; BTree *Node; printf("请输入%d节点的左孩子(0为空)\n",bt->data) ; scanf("%d",&a); if(a!=0) { Node=(BTree*)malloc(sizeof(BTree)); Node->data=http://www.mamicode.com/a; Node->Lchild=NULL; Node->Rchild=NULL; bt->Lchild=Node; creat_BiTree(bt->Lchild); } printf("请输入%d节点的右孩子(0为空)\n",bt->data) ; //输入右子树 scanf("%d",&a); if(a!=0) { Node=(BTree *)malloc(sizeof(BTree)); Node->data=http://www.mamicode.com/a; Node->Lchild=NULL; Node->Rchild=NULL; bt->Rchild =Node; creat_BiTree(bt->Rchild); } return 0; } void PerOrderTraverse(BTree *bt) //先序遍历 { if(bt!=NULL) { printf("%d -->",bt->data); PerOrderTraverse(bt->Lchild); PerOrderTraverse(bt->Rchild); } } void InOrderTraverse(BTree *bt) //中序遍历 { if(bt!=NULL) { InOrderTraverse(bt->Lchild); printf("%d -->",bt->data); InOrderTraverse(bt->Rchild); } } void PostOrderTraverse(BTree *bt) //后序遍历 { if(bt!=NULL) { PostOrderTraverse(bt->Lchild); PostOrderTraverse(bt->Rchild); printf("%d -->",bt->data); } } main() { BTree *bt; int a; printf("\t\t**************** 二叉树操作 ****************\n\n"); bt=Ini_BTNode();creat_BiTree(bt); printf("以%d为根的树创建成功!\n",bt->data); system("pause"); system("cls"); while(1) { system("cls"); printf("\t\t1. 先序遍历\n"); printf("\t\t2. 中序遍历\n"); printf("\t\t3. 后序遍历\n"); printf("\t\t4. 退出程序\n"); printf("\t请选择:"); scanf("%d",&a); switch(a) { case 1:printf("先序遍历\n"); PerOrderTraverse(bt); printf("\n"); system("pause"); break; case 2:printf("中序遍历\n"); InOrderTraverse(bt); printf("\n"); system("pause"); break; case 3:printf("后序遍历\n"); PostOrderTraverse(bt); printf("\n"); system("pause"); break; case 4:exit(0); default:printf("输入错误"); } } system("pause"); }
c语言(二叉树的操作)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。