1011: 二叉排序树的实现和查找

解法:

二叉排序树(Binary Search Tree,简称BST)也被称为二叉搜索树或二叉查找树,是一种重要的二叉树结构,它具有以下性质:

  1. 左子树上所有节点的值都小于根节点的值;
  2. 右子树上所有节点的值都大于根节点的值;
  3. 左右子树也分别为二叉排序树。

根据这些性质,可以通过递归的方法来建立二叉排序树。具体步骤如下:

  1. 若二叉排序树为空树,则直接将当前节点作为根节点;
  2. 若当前节点的值小于根节点的值,则将当前节点插入到左子树中;
  3. 若当前节点的值大于根节点的值,则将当前节点插入到右子树中;
  4. 递归重复以上步骤,直到所有节点都插入到正确的位置上。
#include<iostream>
using namespace std;
struct treeNode {
	int val;
	treeNode* left;
	treeNode* right;
	treeNode(int x) :val(x), left(NULL), right(NULL) {};
};
treeNode* insertNode(treeNode* root, int x) {
	if (root == NULL) return new treeNode(x);
	if (x > root->val) {
		root->right = insertNode(root->right, x);
	}
	else {
		root->left = insertNode(root->left, x);
	}
	return root;
}
treeNode* buildtree() {
	int n, a;
	cin >> n;
	cin >> a; n--;
	treeNode* root = new treeNode(a);
	while (n--) {
		cin >> a;
		root = insertNode(root, a);
	}
	return root;
}
void search(treeNode* root) {
	int x;
	cin >> x;
	int cnt = 0;
	while (root != NULL) {
		cnt++;
		if (x > root->val) {
			root = root -> right;
		}
		else if (x<root->val) {
			root = root->left;
		}
		else {
			cout << cnt;
			return;
		}
	}
	cout << -1;
}
int main() {
	
	treeNode* root = buildtree();
	search(root);
	return 0;
}

解答一下插入节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值