二叉搜索树建立插入及遍历c

1、正确做法

/**
 * 功能:二叉搜索树
 * author:xjp
 */
typedef struct _NODE{
	int value;
	struct _NODE *left;
	struct _NODE *right;
}NODE;

NODE *insertBST(NODE *BST, int value){
	//新建一个节点
	NODE *tmp = (NODE *)malloc(sizeof(NODE));
	tmp->value = value;
	tmp->left = NULL;
	tmp->right = NULL;
	//开始插入
	NODE *p = NULL;
	NODE *q = BST;
	while(q != NULL){ //查询插入点 (q处)
		p = q;
		if(tmp->value < q->value) {q = q->left;}
		else {q = q->right;}
	}
	if(p == NULL) {BST = tmp;} //空树时,新节点作为根节点
	else if(tmp->value < p->value) {p->left = tmp;} //插入新节点(q处)
	else {p->right = tmp;}

	return BST;
}

void midOrder(NODE *root){ //中序遍历
	if(root != NULL){
		midOrder(root->left);
		printf("%d  ", root->value);
		midOrder(root->right);
	}
}
int main(){
	NODE *BST = NULL;
	BST=insertBST(BST, 3);
	BST=insertBST(BST, 1);
	BST=insertBST(BST, 2);
	BST=insertBST(BST, 5);
	midOrder(BST);

	return 0;
}

2、网上搜索了一遍,不下10个网页内容是如下错误程序

/*
* 此程序有问题
*/
void  insertBST(NODE *root, int value){
	NODE *tmp = NULL;
	if(root == NULL){
		tmp = (NODE *)malloc(sizeof(NODE));
		tmp->value = value;
		tmp->left = NULL;
		tmp->right = NULL;
		root = tmp;
	}else{
		if(value < root->value){
			insertBST(root->left, value);
		}else{
			insertBST(root->right, value);
		}
	}
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值