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

发布于:2024-05-10 ⋅ 阅读:(29) ⋅ 点赞:(0)

解法:

二叉排序树(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;
}

解答一下插入节点


网站公告

今日签到

点亮在社区的每一天
去签到