[Estrutura e algoritmo de dados JS] Crie uma árvore binária de acordo com o resultado da passagem de nível da árvore binária com sinal # [8,8,7,9,2, '#', '#', '#', '#' , 4,7]

Prefácio

Para realizar as operações relevantes da árvore binária, devemos criar uma estrutura de árvore binária, em vez de simplesmente usar arrays ou os casos de uso fornecidos no título;

Por exemplo, na oferta Jianzhi:
Descrição da subestrutura da árvore binária.
Insira duas árvores binárias A e B para determinar se B é uma subestrutura de A. (Obs .: concordamos que a árvore vazia não é uma subestrutura de nenhuma árvore)
Casos de uso:

{
    
    8,8,7,9,2,#,#,#,#,4,7},{
    
    8,9,2}

A saída correspondente deve ser:

true

Os elementos da árvore binária são fornecidos de acordo com o caso de uso, mas a estrutura específica não. Antes de resolver o problema, precisamos entender a estrutura da árvore.
{8,8,7,9,2,#,#,#,#,4,7}Na verdade, é o resultado de percorrer a hierarquia da árvore binária , que #representa um nó vazio. A estrutura final será semelhante a esta:

Insira a descrição da imagem aqui
Para uma matriz [8,8,7,9,2,#,#,#,#,4,7], a matriz é a nossa estrutura de árvore binária padrão índice correspondente
Insira a descrição da imagem aqui
é fácil de ver se #adicionar, que é uma árvore binária completa , de acordo com o valor padrão de cerca de matriz de nó, podemos desenhar uma regra

  • Se o valor do subscrito da matriz do nó atual for índice
  • O nó esquerdo do nó atual ----- >> índice * 2 + 1
  • O nó direito do nó atual ----- >> índice * 2 + 2

Ideias de construção:

  • Passe o primeiro elemento do array, se não estiver #(vazio), use este elemento como nó raiz
  • O nó filho esquerdo do nó raiz é passado recursivamente index * 2 + 1
  • O nó filho esquerdo do nó raiz é passado recursivamente index * 2 + 2
  • Se o valor do índice passado for maior ou igual ao comprimento da matriz, o nó raiz é retornado, que é a árvore binária criada
 function TreeNode(val) {
    
    
     this.val = val;
     this.left = null;
     this.right = null;
 }

 function create(index, data) {
    
    
     var p = null;
     if (index >= data.length)  return p;
     if (data[index] != '#') {
    
    
         p = new TreeNode(data[index]);
         p.left = create(index * 2 + 1, data);
         p.right = create(index * 2 + 2, data);
     }
     return p;
 }

Código de teste

 var arr = [8, 8, 7, 9, 2, '#', '#', '#', '#', 4, 7];
 var tree = create(0, arr);
 console.log(tree)

A estrutura final:
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_42339197/article/details/104252079
Recomendado
Clasificación