la reconstruction d'un arbre à partir de sa précommande et postorder listes

Considérons une situation où vous avez deux listes de noeuds de qui vous savez est que l'on est une représentation d'une précommande de la traversée de quelques arbres, et de l'autre une représentation d'un postorder de la traversée de la même arborescence.

Je crois qu'il est possible de reconstituer exactement l'arbre à partir de ces deux listes, et je pense que j'ai un algorithme pour le faire, mais n'ont pas prouvé. Comme ce sera une partie d'un projet de maîtrise j'ai besoin d'être absolument certain qu'il est possible et correct (Mathématiquement prouvé). Toutefois, il ne sera pas le point central du projet, donc je me demandais si il y a une source là-bas (c'est à dire de papier ou d'un livre) je pourrais citer pour la preuve. (Peut-être dans TAOCP? quelqu'un sait la section, éventuellement?)

En bref, j'ai besoin avéré de l'algorithme dans un quotable ressource qui reconstitue un arbre à partir de son pré et post afin traversals.


Remarque: L'arbre en question ne sera probablement pas être binaire, ou d'équilibre, ou tout ce qui serait trop facile.

Note2: en Utilisant uniquement la précommande ou la postorder liste serait encore mieux, mais je ne pense pas que c'est possible.

Nota3: Un nœud peut avoir n'importe quel nombre d'enfants.

Note4: je ne se soucient de l'ordre des frères et sœurs. De gauche ou de droite n'a pas d'importance quand il n'y a qu'un seul enfant.

  • Je suis sûr que c'est possible avec afinde et précommande/postorder mais je ne pense pas que c'est possible avec la précommande et postorder. Avec une seule liste, je suis certain qu'il n'est pas possible.
  • Les nœuds doivent être uniques, non? Parce que sinon vous ne pouvez pas distinguer par exemple (a, [(a, [(a, [])]), (a, [])]) et (a, [(a, []), (a, [(a, [])])]).
  • Je pense que vous devez préciser que vous parlez d'arbres où un nœud peut avoir un nombre arbitraire d'enfants. Souvent, les arbres sont définis de telle sorte que chaque nœud a exactement deux enfants et une ou deux de ces peuvent être "vide". Dans ce cas, il n'est pas possible de reconstruire l'arbre de précommande et postorder parce que vous ne pouvez pas dire si un seul enfant est le gauche "enfant" ou "droit à l'enfant" (voir la discussion ici: profile.iiita.ac.in/pkmallick_03/pages/3_16.html).
  • Je crois que j'en ai lu que afinde est absurde pour les non-arbres binaires.
  • bien sûr, les nœuds sont uniques.
  • B en Effet, les nœuds dans les arbres, je suis en train de travailler avec une quantité arbitraire d'enfants
  • La solution que j'ai opérations actuelles avec une quantité arbitraire d'enfants et préserve leur commande correctement.
  • Par la manière, je pense que la façon de le prouver est de contre-exemple. Supposons que la technique décrite ne fonctionne PAS, et puis trouver une contradiction. C'est vraiment juste un intestin de l'instinct, mais je pense que c'est la voie à suivre ici.
  • Juste pour préciser, la preuve en contre-exemple, au mieux, vous donne une existence de preuve, pas de l'algorithme. Le problème avec "supposer qu'il ne fonctionne pas", c'est que vous avez à assumer toute et toutes les combinaisons de raisons pour lesquelles cela ne fonctionne pas.
  • C'était mon Google les questions de l'entrevue 😉

InformationsquelleAutor NomeN | 2009-07-16