Quand j'ai posé cette question, je ne me suis pas retourné. Je pensais que la structure en ordre peut être obtenue en fonction du tri. Avec le suivi et l'ordre, un arbre peut être construit, puis je peux juger si l'arbre est un arbre de tri binaire. Mais cette idée est fausse
L'idée correcte est en fait très simple: vérifiez l'expression du suffixe, le dernier est la racine, recherchez dans l'arbre et parcourez le tableau dans l'ordre, de la tête du tableau au premier nœud plus grand que la racine est l'enfant gauche, et le bon enfant doit tous être supérieur à la racine, récursif, Si le bon enfant n'est pas supérieur à la racine, le parcours du suffixe est faux
pre(int las[], int start, int index)Cette fonction est une fonction récursive, start-index est la plage de suffixes à parcourir à ce moment, index est la racine de cette plage, par exemple, au 5 7 6 9 11 10 8début start = 0, index = 6, où las [index] est la racine de cette plage
find_min(int las[], int start, int index)Cette fonction consiste à trouver le premier nœud supérieur ou égal à la racine, puis à utiliser ce point pour diviser la portée - en divisant essentiellement les nœuds enfants gauche et droit de la racine
Récursivité vers les sous-plages gauche et droite à la fin
Code:
#include<stdio.h>#include<stdlib.h>intfind_min(int las[],int start,int index){
for(int i = start; i < index; i++){
if(las[i]>= las[index]){
return i;}}}intpre(int las[],int start,int index){
// index为后缀遍历时对应的根的// printf("start = %d index = %d\n", start, index);if(start < index){
// printf("index = %d\n", index);int end =find_min(las, start, index);// 刚比las[index]大或者等的下标// printf("end = %d\n", end);for(int i = end; i < index; i++){
if(las[i]< las[index]){
return0;}}pre(las, start, end -1);// printf("sss end = %d\n", end);pre(las, end, index -1);}return1;}intmain(){
int las[40];int l_num =0;// 字符的个数do{
scanf("%d",&las[l_num++]);}while(getchar()!='\n');// printf("%d\n", l_num);if(pre(las,0, l_num -1)){
printf("true");}elseprintf("false");return0;}
Je suppose que tu aimes
Origine blog.csdn.net/qq_43779658/article/details/106604339