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:
Para uma matriz [8,8,7,9,2,#,#,#,#,4,7]
, a matriz é a nossa estrutura de árvore binária padrão índice correspondente
é 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: