Establecer una estructura de lista enlazada de árbol binario

Establecer una estructura de lista enlazada de árbol binario

tema

Se sabe que el árbol binario no vacío adopta una estructura de almacenamiento secuencial, y la información de los datos de los nodos se almacena secuencialmente en el arreglo BT [0 ... MAXZize-1] (si el elemento es 0, significa que no existe en el árbol binario), por favor escriba un algoritmo para generar el árbol binario La estructura de la lista enlazada.

análisis

Cuando se realiza un bucle a un cierto punto de BT [i], es principalmente para encontrar el nodo padre del nodo, y cuyo nodo hijo es el nodo BT [i] conectado es el principal problema.

  • Al calcular el nodo padre, j = (i-1) / 2 ;
  • ¿Es el hijo izquierdo o el hijo derecho de j ?
    (1) Si i-2 * j-1 == 0 , significa que es el hijo izquierdo de j .
    (2) Si i-2 * j-1! = 0 significa que es el hijo correcto de j

Código

Tipo de datos básico

El siguiente código puede tener tipos de datos similares, por lo que no lo repetiré más tarde.

#define MAXSize 100
typedef struct bNode{    
	int data;    
	struct bNode *lchild,*rchild;   
 }BTNode,*BTREE;
 #define len sizeof(BTNode)

Código central

// 建立二叉树链表结构
BTREE CTREATEBLINK(int BT[],int n){    
	BTREE T=NULL,PRT[MAXSize];   
	 int j=0;    
	 PRT[j]=(BTREE) malloc(len);    
	 PRT[j]->data=BT[0];    
	 PRT[j]->rchild =NULL;   
	  PRT[j]->lchild= NULL ;    
	  T=PRT[j];    
	  for (int i = 1; i < n; i++)    {        
	  	if (BT[i]!=0)        {            
	  		PRT[i]=(BTREE) malloc(len);            
	  		PRT[i]->data=BT[i];           
	  	 	PRT[i]->rchild =NULL;           
	  	 	 PRT[i]->lchild= NULL ;            
	  	  	 j = (i-1)/2;            
	  	 	  if (i-2*j-1==0)            {                
	  	   		PRT[j]->lchild=PRT[i];            
	  	 	  }else            {               
	  	   		 PRT[j]->rchild=PRT[i];           
	  	  	  }                                 
	  	} // if   
	 }// for         
	return T;
}

Supongo que te gusta

Origin blog.csdn.net/honeylife/article/details/99968158
Recomendado
Clasificación