Exemplo n.º 1
0
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);
    }
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
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);	
	}
}
Exemplo n.º 4
0
/*
中序遍历的递归实现
*/
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);	
	}
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
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;
}
Exemplo n.º 7
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;

}