Pseudocode mise en œuvre non récursive de la hauteur des arbres et isBST

voix
4

Je suis dans le processus de conversion de fonction récursive pour un BST à non récursif pour aider à préparer un entretien. Jusqu'à présent, je me suis dit en précommande, afinde, postorder, rechercher, supprimer, insérer, et la conversion de la BST sur une liste chaînée circulaire. Je ne parviens pas à comprendre comment utiliser la pile ou les files d'attente pour obtenir la hauteur et de trouver si elle est un BST. Des conseils seraient grandement appréciés. Je ne cherche pas pour le code, mais la logique derrière le code.

Créé 14/09/2011 à 03:03
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
5

Pour commencer, excellent travail pour préparer des interviews comme celle-ci! Je souhaite que vous amusant de jouer avec ces algorithmes.

Commençons par la tâche d'essayer de déterminer si l'arbre binaire est un BST. Une façon de le faire est de faire une promenade envue de l'arbre et de vérifier si les éléments sont dans l'ordre. Cela est vrai si et seulement si l'arbre est un BST. Puisque vous avez déjà du code pour faire une promenade envue des éléments de l'arbre, vous devriez être en mesure d'adapter facilement votre code pour vérifier si les éléments qui sortent de la promenade afinde sont classés en gardant la trace du dernier élément que vous avez vu dans le pied de inorder, puis en comparant chaque élément généré à l'élément précédent. Si les deux sont hors d'usage, l'arbre n'est pas un BST.

Pour déterminer la hauteur de l'arbre, une option serait de prendre l'une des recherches que vous avez découvert jusqu'à présent (pré-commande, postorder, afinde) et de garder trace de la hauteur de la pile à chaque point. L'idée ici est que depuis votre pile sera toujours garder une trace du chemin de retour de tout nœud jusqu'à la racine, vous pouvez simplement marcher l'arbre et enregistrer le plus profond que vous avez jamais vu la pile devenir. Cette profondeur maximale est alors la hauteur de l'arbre.

J'espère que cela t'aides! Et bonne chance avec des interviews!

Créé 14/09/2011 à 03:17
source utilisateur

voix
0

Pour trouver la hauteur de l'arbre, vous pouvez utiliser le traversal Morris [O (n)]].

Pour vérifier si elle est un BST valide, faire une promenade envue de l'arbre. Déplacer les éléments dans un tableau. Vérifiez si le tableau est trié ou non pour valider un BST.

Créé 14/09/2011 à 09:33
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more