Titre description
Et dans lequel un arbre binaire donné d'un nœud, 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.
pensée
Tout d' abord, déterminer si le noeud a pas de nœuds enfants droit, le cas échéant, a été traversé les nœuds enfants enfant gauche et à droite, jusqu'à ce qu'un NULL, puis revenir au nœud enfant gauche
si le nœud est pas de nœuds enfants à droite, puis un couche, déterminer si le noeud n'est pas le noeud enfant gauche parent, si le nœud parent est retourné, sinon, continuer jusqu'à il n'y a pas de nœud parent, ce qui indique que ce noeud est le dernier noeud, ou NULL
code
class Solution {
public:
TreeLinkNode* GetNext(TreeLinkNode* pNode)
{
if(pNode == NULL)
return NULL;
if(pNode->right != NULL)
{
TreeLinkNode* tmp = pNode->right;
while(tmp->left != NULL)
tmp = tmp->left;
return tmp;
}
while(pNode->next != NULL)
{
TreeLinkNode* tmp = pNode->next;
if(tmp->left == pNode)
return tmp;
pNode = tmp;
}
return NULL;
}
};