次のノードのバイナリツリー - オフ牛

タイトル説明は
、バイナリツリーとなっているノード、先行順走査順とリターンの次のノードを見つけることを考えます。ツリー内のノードは、左と右の子ノードではないだけを含むことに注意してください、親ノードは、を指すポインタが含まれています。
ソリューション:行きがけは、左右
2つのケース:
①pNode右のサブツリーが空である、それはノードの左の子ノードを検索し、現在のノードが同じノード、ノードすなわちになるまでバックアップPNODEは、次のノードのために
空にされていない右のサブツリー②pNodeで、右ノードPNODEに左のリーフノードを見つけるために下にトラバース

ここに画像を挿入説明

class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode)
    {
        if (pNode == NULL || (pNode->left==NULL && pNode->right==NULL && pNode->next==NULL))
            return NULL;
        if (pNode->right == NULL)
        {
            while (pNode->next && pNode->next->left != pNode)
                    pNode = pNode->next;
            return pNode->next;
        }
        else if (pNode->right)
        {
            pNode = pNode->right;
            while (pNode->left)
                pNode = pNode->left;
            return pNode;
        }
    }
};
公開された315元の記事 ウォンの賞賛119 ビュー110 000 +

おすすめ

転載: blog.csdn.net/w144215160044/article/details/104917890