Título de programación: El número de nodos hoja del árbol binario (hacia la parte delantera de recorrido fin, la contribución, el número de nodos de la hoja)

El número de nodos de hoja en una estructura de almacenamiento de lista binario como un árbol binario, el árbol binario.

Formatos de entrada:

entrada de secuencia motivo en el árbol binario.

Consejo: una secuencia binaria de primer orden es una cadena, si el personaje es un '#', indica que el árbol binario está vacía, de lo contrario, el carácter es un elemento de datos nodo correspondiente.

Los formatos de salida:

Hay dos líneas de salida:

La primera fila es la orden previo secuencia binaria;

La segunda línea es el número de nodos de hoja del árbol binario.

de entrada de la muestra:

ABC ## DE # G ## F ###

Resultado de muestra:

CBEGDFA

3

 

#include<iostream>
#include<stack>
#include<string>
using namespace std;
int a[10000],cunt=0;
void mid(int k=1){
	if(a[k*2]!=-1)mid(k*2);
	cout<<(char)a[k];
	if(a[k*2+1]!=-1)mid(k*2+1);   //中序遍历 
	
	if(a[k*2]==-1&&a[k*2+1]==-1)cunt++;   //增加叶子节点个数 
}
int main() {
	string str;
	stack<int> s;
	cin>>str;
	s.push(1);
	for(int i=0; i<str.length(); i++) {  //根据前序遍历特点进行建树 
		int p=s.top();s.pop();
		if(str[i]!='#') {
			a[p]=str[i];
			s.push(p*2+1);
			s.push(p*2);
		} else a[p]=-1;
	}
	mid();cout<<endl<<cunt<<endl;
	return 0;
}

 

Publicado 42 artículos originales · alabanza ganado 16 · vistas 3413

Supongo que te gusta

Origin blog.csdn.net/qq_41542638/article/details/95361138
Recomendado
Clasificación