int in_traverse(struct node* temp_ptr) { if(temp_ptr!=NULL) { in_traverse(temp_ptr->left); printf("%d ",temp_ptr->data); in_traverse(temp_ptr->right); } }
int main() { int i; int num; printf("请输入节点个数:"); scanf("%d",&num); //输入num个整数 int *arr = (int *)malloc(num*sizeof(int)); printf("请依次输入这%d个整数(必须互不相等):",num); for(i=0;i<num;i++) scanf("%d",arr+i); //中序遍历该二叉排序树,使数据按照从小到大的顺序输出 BSTree pTree = create_BSTree(arr,num); printf("中序遍历该二叉排序树的结果:"); in_traverse(pTree); printf("\n"); //查找给定的整数 int key; printf("请输入要查找的整数:"); scanf("%d",&key); if(search(pTree,key)) printf("查找成功\n"); else printf("查找不到该整数\n"); //插入给定的整数 printf("请输入要插入的整数:"); scanf("%d",&key); if(insert(pTree,key)) { printf("插入成功,插入后的中序遍历结果:"); in_traverse(pTree); printf("\n"); } else printf("插入失败,该二叉排序树中已经存在整数%d\n",key); //删除给定的整数 printf("请输入要删除的整数:"); scanf("%d",&key); if(delete_BSTree(pTree,key)) { printf("删除成功,插入后的中序遍历结果:"); in_traverse(pTree); printf("\n"); } else printf("删除失败,该二叉排序树中不存在整数%d\n",key); return 0; }
/* 递归中序遍历二叉排序树,得到元素从小到大有序排列的序列 */ void in_traverse(BSTree pTree) { if(pTree) { if(pTree->lchild) in_traverse(pTree->lchild); printf("%d ",pTree->data); if(pTree->rchild) in_traverse(pTree->rchild); } }
/* 中序遍历的递归实现 */ void in_traverse(BTree pTree) { if(pTree) { if(pTree->pLchild) in_traverse(pTree->pLchild); printf("%d ",pTree->data); if(pTree->pRchild) in_traverse(pTree->pRchild); } }
int main() { RBtree T; init(&T); int i; int arr[SIZE] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -8, 76, 222, 12, 11, 111, 88, -11, 22, 1111}; for (i = 0; i < SIZE; i++) { insert(&T, arr[i]); } printf("pre: "); pre_traverse(T); printf("\n"); printf("in: "); in_traverse(T); printf("\n"); printf("post: "); post_traverse(T); printf("\n\n"); Node *p; for (i = 0; i < SIZE; i++) { if ( (p = search(T, arr[i])) != &NIL) { printf("%d now T->data: %d\np->data: %d\n", i, T->data, p->data); printf("delete: %d\n", p->data); delete(&T, p); printf("pre: "); pre_traverse(T); printf("\n"); printf("in: "); in_traverse(T); printf("\n"); printf("post: "); post_traverse(T); printf("\n\n"); } } return 0; }
int main() { int A[] = {0,1,2,3,4,5,6,7}; int len = 8; BTree pTree; createBTree(&pTree,A,0,len-1); printf("the height of this tree is %d\n",height(pTree)); printf("中序遍历后的结果为:\n"); in_traverse(pTree); printf("\n"); return 0; }
int display_bst(struct node* head) { struct node *temp,*xptr; // temp=(struct node *)malloc(sizeof(struct node )); if(head==NULL) { printf("\nThe list is empty."); return 0; } temp=head; in_traverse(temp); printf("\n"); return 0; }