Un besoin de se rappeler ce que le sujet.
Titre Description
Étant donné un arbre binaire et un noeud qui est, trouver le nœud suivant dans un ordre pré - commande et traversal retours. Notez que le nœud de l'arbre contient non seulement les nœuds enfants gauche et à droite, le nœud parent contient un pointeur vers.
problème solution
Suivant noeud arbre binaire:
La règle de déplacement, lorsqu'il est présent dans le sous - arbre droit du noeud, la séquence suivante noeud de traversée pour le nœud le plus à gauche sous - arbre droit. Toutefois, lorsque le nœud n'existe pas sous - arbre droit, envue du nœud traversal suivant dans le nœud doit avoir pour les parents. Mais qu'est-ce quelle génération?
Les caractéristiques de la séquence, à gauche du noeud parent doit avoir été visité séquence de traversée, de sorte que le noeud suivant doit être la première sur le noeud parent à droite de la trajectoire de nœud parent.
Afinde résultats traversal: d-> b-> h-> e > i-> a-> F-> c-> g
de crises à travers les résultats , voir l' analyse des explications.
Code est la suivante:
/*
public class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null;
TreeLinkNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public TreeLinkNode GetNext(TreeLinkNode pNode)
{
if(pNode == null) return null;
if(pNode.right != null){
pNode = pNode.right;
while(pNode.left != null)
pNode = pNode.left;
return pNode;
}
while(pNode.next != null){
if(pNode.next.left == pNode)
return pNode.next;
pNode = pNode.next;
}
return null;
}
}