C++ 二叉搜索樹


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

源代碼:

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實現

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM