二叉排序树

来源:互联网 发布:淘宝买到假货怎么投诉 编辑:程序博客网 时间:2024/06/03 14:05
二叉排序树的创建、插入结点,并以中序遍历输出。
#include "stdio.h"#include "malloc.h"typedef struct TNode{int data;struct TNode *lchild, *rchild;}TNode, *BST;void create(BST &T);                //创建根结点void insert(BST T, int k);          //插入结点void comprison(BST &T, int k);      //比较结点void inorder(BST T);                //中序遍历int main(){int k;BST T;create(T);scanf("%d", &k);BST p = T;while(k != 0){comprison(T, k);scanf("%d", &k);}printf("中序遍历:");inorder(T);printf("\n");return 0;}//创建根结点void create(BST &T){int a;scanf("%d", &a);if(a != 0){T = (BST)malloc(sizeof(TNode));T->data = a;T->lchild = T->rchild = NULL;}}//插入结点void insert(BST T, int k){BST q;q = (BST)malloc(sizeof(TNode));q->data = k;q->lchild = q->rchild = NULL;if(k < T->data)T->lchild = q;elseT->rchild = q;}//比较结点void comprison(BST &T, int k){if(k == T->data){printf("请重新输入!\n");return;}else{if(k < T->data){if(T->lchild == NULL)insert(T, k);elsecomprison(T->lchild, k);}else{if(T->rchild == NULL)insert(T, k);elsecomprison(T->rchild, k);}}}//中序遍历void inorder(BST T){if(T != NULL){inorder(T->lchild);printf("%d ", T->data);inorder(T->rchild);}}

0 0
原创粉丝点击