Solução de árvore binária equilibrada – Problema de código leet
Publicado originalmente no meu blog Hashnode-publicado aqui para a comunidade Dev.to. Na adaptação cinematográfica desse desafio, nos encontramos em uma missão intrigante para determinar o equilíbrio de uma árvore binária mística. Nossa missão é revelar o equilíbrio da árvore, onde a diferença entre as alturas da subárvore esquerda (LST) e a subárvore direita (RST) não é superior a 1. Math.abs (lst_height – rst_height) <= 1. –> A árvore é equilibrada, entre no modo de saída de tela cheia de tela cheia, nossa jornada começa com uma travessia da Ordenha, uma estratégia de exploração adequada para nossa tarefa enigmática. Durante nossa odisseia, calculamos meticulosamente a altura de cada nó, uma informação vital. A altura de um nó, discernimos, é a maior das alturas de seu LST e RST. Altura de um nó = math.max (lst_height, rst_height) + 1 Digite o modo de saída de tela cheia de tela cheia à medida que nos aprofundamos na floresta dos nós, examinamos a diferença de altura, garantindo que ela permaneça dentro dos limites do equilíbrio. A narrativa se desenrola com a suposição de que a árvore, como qualquer boa história, é inerentemente equilibrada. No entanto, nosso travessio vigilante abriga o poder de revelar quaisquer desequilíbrios à espreita nas sombras. Se as condições de altura vacilarem, uma revelação de desequilíbrio quebra nossa ilusão, e saímos de nossa missão imediatamente, tendo descoberto a verdade dessa árvore binária cativante. /*** Definição para um nó de árvore binária. * função treenode (val, esquerda, direita) { * this.val = (val === indefinido? 0: val) * this.left = (esquerda === indefinido? da árvore) */ const Postorder = (nó) => {if (node === null) retornar 0; Let Leftheight = Postorder (node.left); Seja Rightheight = Postorder (Node.right); /* A idéia é que assumimos que a árvore é equilibrada por padrão. Se a condição de altura falhar durante a travessia, dizemos que está desequilibrada e saia da altura imidietamente da LST – altura do RST <= 1 –>. altura equilibrada */ let diff = math.abs (leftheight – rightheight); if (diff> 1) {return ‘não equilibrado’; } if (leftheight === ‘não equilibrado’ || rightheight === ‘não equilibrado’) retornar ‘não equilibrado’ return math.max (leftheight, rightheight) + 1; } var isBalanced = function (root) {let res = postorder (root); // console.log ({res}) se (res === ‘não equilibrado’) retorna false; retornar true; }; Digite o modo de saída de tela cheia de tela cheia
Fonte
Publicar comentário