[C ++] Inserción, eliminación y búsqueda de árbol de búsqueda binaria

#include<iostream>
using namespace std;
struct BinTreeNode
{
    
    
	int data;
	BinTreeNode* leftChild, * rightChild;
	BinTreeNode(int c, BinTreeNode* l = NULL,
		BinTreeNode* r = NULL) :data(c),
		leftChild(l), rightChild(r) {
    
    }

};
BinTreeNode* insert(BinTreeNode* root, int val) {
    
    
	if (root == NULL) {
    
    
		root = new BinTreeNode(val);
	}
	else {
    
    
		if (val < root->data) {
    
    
			root->leftChild = insert(root->leftChild, val);
		}
		else{
    
    
			root->rightChild = insert(root->rightChild, val);
		}
	}
	return root;
}
void preOrder(BinTreeNode* root) {
    
    
	if (root != NULL) {
    
    
		cout << root->data << " ";
		preOrder(root->leftChild);
		preOrder(root->rightChild);
	}
}
void inOrder(BinTreeNode* root) {
    
    
	if (root != NULL) {
    
    
		inOrder(root->leftChild);
		cout << root->data << " ";
		inOrder(root->rightChild);
	}
}
void postOrder(BinTreeNode* root) {
    
    
	if (root != NULL) {
    
    
		postOrder(root->leftChild);
		postOrder(root->rightChild);
		cout << root->data << " ";
	}
}
int main() {
    
    
	BinTreeNode* root = NULL;
	int num[] = {
    
     4,2,1,3,6,5,7 };
	for (int i = 0;i < 7;i++) {
    
    
		root = insert(root, num[i]);
	}
	cout << "先序遍历:";
	preOrder(root);
	cout << "\n";
	cout << "中序遍历:";
	inOrder(root);
	cout << "\n";
	cout << "后序遍历:";
	postOrder(root);
    return 0;
}




Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Eliminar

Inserte la descripción de la imagen aquí
Al eliminar un nodo hoja: elimínelo directamente. Apunta el puntero de su nodo padre a NULL
Inserte la descripción de la imagen aquí

Al eliminar solo un nodo secundario: apunte el puntero de su nodo principal al nodo secundario del nodo eliminado.
Inserte la descripción de la imagen aquí
Cuando el nodo eliminado tiene subárboles izquierdo y derecho: reemplace el nodo eliminado con otro nodo, el elemento más pequeño del subárbol derecho o el elemento más grande del subárbol izquierdo.
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_48180029/article/details/114493056
Recomendado
Clasificación