Árbol binario
Primero conozca la clasificación del árbol binario
En cuanto a por qué el orden medio es así, primero atraviesa el árbol con D como nodo. G no tiene hijos, regresa a D y luego ordena a la derecha. H tiene hijos y es orden izquierdo, así que escribe I primero, luego H, y luego regresa D , Y luego atraviesa el lado derecho de A, a C encuentra que C tiene un hijo, primero atraviesa el lado izquierdo de C, encuentra que E tiene un hijo, realiza el orden medio en E, primero E luego J, y luego regresa a CF.
H título Trie tree
Vaya directamente al código ... porque realmente no sé cómo escribir el código para esta lección. . .
#include<iostream>
#include<string.h>
using namespace std;
struct trie_node
{
int cnt;
bool flag;
trie_node *child[30];
};
trie_node* creat_node()
{
trie_node *node = new trie_node();
node->cnt = 0;
node->flag = false;
memset(node->child,NULL,sizeof node->child);
}
void insert_node(trie_node *root,string key)
{
trie_node *node = root;
for(int i=0;i<key.size();i++)
{
if(node->child[key[i]-'a'] == NULL)
node->child[key[i]-'a'] = creat_node();
node = node->child[key[i]-'a'];
node->cnt++;
}
}
int search_trie(trie_node *root,string key)
{
trie_node *node = root;
for(int i=0;i<key.size();i++){
if(node->child[key[i]-'a'] == NULL){
return 0;
}
node = node->child[key[i]-'a'];
}
return node->cnt;}
int main()
{
int n;
cin>>n;
string s1,s2;
trie_node *root = new trie_node();
for(int i=0;i<n;i++){
cin>>s1;
insert_node(root,s1);
}
int m;
cin>>m;
for(int i=0;i<m;i++){
cin>>s2;
cout<<search_trie(root,s2)<<endl;
}
return 0;
}