首页 > 编程语言 > 详细

C++ 二叉搜索树

时间:2018-10-13 11:22:45      阅读:125      评论:0      收藏:0      [点我收藏+]

二叉搜索树利用其特有的二叉树性质,使其搜索更方便

源代码:

struct node {
	int val;
	node *left, *right;
};

//the function of insert
node *insert(node *n, int key) {
	if (n == NULL) {
		node *t = new node;
		t->val = key;
		t->left = t->right = NULL;
		return t;
	}
	else {
		if (key < n->val) n->left = insert(n->left, key);
		else n->right = insert(n->right, key);
		return n;
	}
}
//the function of find_key
bool find(node *n, int key) {
	if (n == NULL) return false;
	else if (key == n->val) return true;
	else if (key > n->val) return find(n->right, key);
	else return find(n->left, key);
}

//the function of remove
node *remove(node *n, int key) {
	if (n == NULL) return NULL;
	else if (key < n->val) n->left = remove(n->left, key);
	else if (key > n->val) n->right = remove(n->right, key);
	else if (n->left == NULL) {
		node *q = n->right;
		delete n;
		return q;
	}
	else if (n->left->right == NULL) {
		node *q = n->left;
		q->right = n->right;
		delete n;
		return q;
	}
	else {
		node *q;
		for (q = n->left; q->right->right != NULL; q = q->right);
		node *r = q->right;
		q->right = r->left;
		r->left = n->left;
		r->right = n->right;
		delete n;
		return r;
	}
	return n;
}

  利用STL实现

 

C++ 二叉搜索树

原文:https://www.cnblogs.com/xuxiaojin/p/9782213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!