安全プランを証明するために、バイナリツリーの次のノード

タイトル説明

前記ノードの指定されたバイナリツリーは、先行順走査順序とリターンの次のノードを見つけます。ツリー内のノードは、左と右の子ノードではないだけを含むことに注意してください、親ノードは、を指すポインタが含まれています。

思考

まず、ノードが右の子ノードを持っていないかどうかを決定し、もしあれば、NULLになるまで、その後、左の子ノードに戻り、左の子と右の子ノードをトラバースされた
ノードが右の子ノードをされていない場合は、Aまで、その後、層、ノードは親が親ノードが返された場合、子ノードを残し、そうでない場合は、その後、親ノードが存在しないまで継続し、このノードが最後のノードであることを示す、またはNULLでないかどうかを判断します

コード

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;
    }
};
公開された85元の記事 ウォンの賞賛0 ビュー400

おすすめ

転載: blog.csdn.net/weixin_38312163/article/details/104810516