Inplementation of Binary Search Tree using recursion-local version 1【1月22日学习笔记】

点击查看代码
//Inplementation of Binary Search Tree
#include<iostream>
using namespace std;
struct bstnode {
	int data;
	bstnode* left;
	bstnode* right;
};
/*bstnode* root = NULL;*/
/*root = NULL;                    wrong*/
/*全局范围内的变量的初始化必须在声明的时候完成*/

bstnode* getnewnode(int x) {
	bstnode* temp = new bstnode;
	temp->data = x;
	temp->left = NULL;
	temp->right = NULL;
	return temp;
}//创建新节点并返回地址

bstnode* insert(bstnode* root,int x) {//参数式递归
	if (root == NULL) {//空树
		root = getnewnode(x);//root指向新节点
		return root;//递归中止
	}
    if (x <= root->data) {//插入数据较小以左边为子root建立新子树
		root->left = insert(root->left, x);//左边子root指向新子树
	}
	else {//插入数据较大以右边为子root建立新子树
		root->right = insert(root->right, x); //右边子root指向新子树
	}
	return root;//返回新树的头节点的地址
}//时间复杂度:O(logn)in best case(balanced bst)

bool search(bstnode* root, int x) {//副本即可
	if (root == NULL)  return false;
	if (root->data == x)  return true;
	if (x <= root->data) return search(root->left, x);
	else return search(root->right, x);
}//时间复杂度:O(logn)in best case(balanced bst)

int main() {
	bstnode* root = NULL;
	root = insert(root, 15);
	root = insert(root, 10);
	root = insert(root, 20);
	root = insert(root, 25);
	root = insert(root, 8);
	root = insert(root, 12);
	int n;
	cin >> n;
	if (search(root, n)) cout << "Found" << endl;
	else cout << "Not Found\n";
}
	

posted @   bituion  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示