二叉查找树

题目:二叉查找树结构为: 
typedef struct BSTree 

    struct BSTree *left, *right; 
    int item; 
} BSTree; 
实现以下操作: 
1)  创建一个新的 BST 结点。 
2)  在 BST 中查找一个指定的元素。 

3)  向 BST 中插入元素。 

代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct BSTree 
{ 
    struct BSTree *left, *right; 
    int item; 
} BSTree, *BSTreePtr; 

BSTreePtr insert(BSTreePtr root,int data)
{
	BSTreePtr ptr = root;
	BSTreePtr tempnode;
	BSTreePtr newnode = (BSTreePtr)malloc(sizeof(BSTree));
	newnode->item = data;
	newnode->left = NULL;
	newnode->right = NULL;
	if(!ptr)
		return newnode;
	while (ptr)
	{
		tempnode = ptr;
		if (data <= ptr->item)
			ptr = ptr->left;
		else
			ptr = ptr->right;
	}
	if (data <= tempnode->item)
		tempnode->left = newnode;
	else
		tempnode->right = newnode;
	return root;
}

BSTreePtr creatTree(void)
{
	int data;
	BSTreePtr root = NULL;
	printf("请输入要插入的结点:(以0作为结束)\n");
	scanf("%d",&data);
	while (data)
	{
		root = insert(root,data);
		scanf("%d",&data);
	}
	return root;
}

int find(BSTreePtr root,int m)
{
	BSTreePtr ptr = root;
	if (!ptr)
		return 0;
	while (ptr)
	{
		if (m == ptr->item)
			return 1;
		else if (m < ptr->item)
			ptr = ptr->left;
		else
			ptr = ptr->right;
	}
	return 0;
}

int main(void)
{
	int m,res;
	BSTreePtr root = NULL;
	root = creatTree();
	printf("请输入想查找的元素:\n");
	scanf("%d",&m);
	res = find(root,m);
	if (res)
		printf("找到元素%d\n",m);
	else
		printf("没找到元素%d\n",m);
	return 0;
}
通过这次的编程题是我受益匪浅,让我能更深入的理解指针操作和指针变量的赋值,比如你想改变某一指针变量最好是通过其地址进行操作,必要时还要用到二级指针,因为单纯变量的改变是局部的,而地址中的变量的改变是全局的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值