Demostrar la oferta de seguridad: secuencia de recorrido de árbol binario de búsqueda posterior (de forma recursiva)

tema:

Introduzca una matriz de enteros, la matriz no es el resultado de la determinación de un árbol binario de búsqueda (a la izquierda <raíz <derecha) después de atravesar. Si la salida Sí, de lo contrario la salida No. Supongamos que la matriz de entrada de cualquiera de los dos números son diferentes entre sí.

Respuesta:

De forma recursiva, de la siguiente manera:

import java.util.*;
public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence==null||sequence.length==0){
            return false;
        }
        int root = sequence[sequence.length-1];
        int index = -1;
        //找到左右子树分割点
        for(int i=0;i<sequence.length-1;i++){
            if(sequence[i]>root){
                index = i;
                break;
            }
        }
        boolean left = true;
        boolean right = true;
        //有右子树
        if(index>-1){
            for(int i=index;i<sequence.length-1;i++){
                //如果右子树有比root小的数字,false
                if(sequence[i]<root){
                    return false;
                }
            }
            right = VerifySquenceOfBST(Arrays.copyOfRange(sequence,index,sequence.length-1));
        }
        if(index>0){
            //有左子树
            left = VerifySquenceOfBST(Arrays.copyOfRange(sequence,0,index));
        }
        
        return left&&right;
    }
}

 

Publicado 92 artículos originales · ganado elogios 2 · Vistas 8403

Supongo que te gusta

Origin blog.csdn.net/wyplj2015/article/details/104882412
Recomendado
Clasificación