二叉排序树
2015-05-11 18:58
337 查看
二叉排序树的创建、插入结点,并以中序遍历输出。
#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; else T->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); else comprison(T->lchild, k); } else { if(T->rchild == NULL) insert(T, k); else comprison(T->rchild, k); } } } //中序遍历 void inorder(BST T) { if(T != NULL) { inorder(T->lchild); printf("%d ", T->data); inorder(T->rchild); } }
相关文章推荐