二叉樹的下一個節(jié)點

題目:
給定一個二叉樹和其中的一個結(jié)點,請找出中序遍歷順序的下一個結(jié)點并且返回。注意,樹中的結(jié)點不僅包含左右子結(jié)點,同時包含指向父結(jié)點的指針。

思路:
根據(jù)中序遍歷的思路然后進行歸納, 分為兩種類型有右子樹,無右子樹
1.有右子樹的節(jié)點的下一個節(jié)點,是當前節(jié)點右子樹最左節(jié)點.
2.無右子樹的節(jié)點,如果當前節(jié)點是父節(jié)點的左子節(jié)點,下一個節(jié)點就是父親節(jié)點.
3.無右子樹的節(jié)點, 如果當前節(jié)點是父親節(jié)點的右子節(jié)點,下一個節(jié)點就是父親節(jié)點的下一個節(jié)點...
4.其他情況的下一個節(jié)點就為null

代碼:

public class GetNext
{
    /**
     * @param pNode
     * @return
     */
    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;
        }
        //遍歷結(jié)束還不符合這兩種條件的1.是最后的節(jié)點沒有父節(jié)點 2.是不存在這個節(jié)點
             return null;
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容