King Way_Ejemplo 10.2 Árbol de ordenación binaria

Árbol de clasificación binaria

También conocido como árbol de búsqueda binaria.
rasgo:

  • El subárbol izquierdo no está vacío y el valor clave de todos los nodos del subárbol izquierdo es menor que el valor clave del nodo raíz.
  • El subárbol derecho no está vacío y el valor clave de todos los nodos en el subárbol derecho> el valor de la clave del nodo raíz.
  • Los propios subárboles izquierdo y derecho también son árboles de clasificación binaria.
  • El árbol binario se recorre en orden medio y el resultado está en orden ascendente

tema

Para N nodos con diferentes valores de clave, inserte un árbol de clasificación binario inicialmente vacío en orden. Una vez que la inserción se realiza correctamente, se emite el valor de la clave del nodo principal y no hay ningún nodo principal para generar -1.
Entrada de muestra:
5
2 5 1 3 4

Salida de muestra:
-1
2
2
5
3

Código

Función clave:
Llame siempre a la función de inserción de forma recursiva, sabiendo que se alcanzó la posición adecuada, en este momento la raíz es NULL y es necesario crear un nuevo nodo para el nodo insertado.

TreeNode* insert(TreeNode* root,int number,int father)
{
    
    
	if(root==NULL) 
	{
    
    
		root=new TreeNode(number);//为插入的节点创建新的节点 
		cout<<father<<endl;
	}
	else if(number<root->data)  
		root->leftChild=insert(root->leftChild,number,root->data);
	else if(number>=root->data)
		root->rightChild=insert(root->rightChild,number,root->data);
	return root;//返回这颗更新后的树 
	 
}

Código completo:

//将n个数按顺序插入二叉排序树
#include <iostream>
using namespace std;
struct TreeNode{
    
    
	int data;
	TreeNode *leftChild;
	TreeNode *rightChild;
	TreeNode(int x):data(x),leftChild(NULL),rightChild(NULL){
    
    }
};
//参数:树的根节点、待插入的数据 
TreeNode* insert(TreeNode* root,int number,int father)
{
    
    
	if(root==NULL) 
	{
    
    
		root=new TreeNode(number);//为插入的节点创建新的节点 
		cout<<father<<endl;
	}
	else if(number<root->data)  
		root->leftChild=insert(root->leftChild,number,root->data);
	else if(number>=root->data)
		root->rightChild=insert(root->rightChild,number,root->data);
	return root;//返回这颗更新后的树 
	 
}
int main()
{
    
    
	int n;cin>>n;
	TreeNode *root=NULL;//建立空树 
	for(int i=0;i<n;++i)
	{
    
    
		int number;cin>>number;
		root=insert(root,number,-1); 
	}
 } 

Supongo que te gusta

Origin blog.csdn.net/weixin_45019830/article/details/114963616
Recomendado
Clasificación