給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
當該結點有右子樹時,下乙個結點就是右子樹中最左的那個結點
當該結點沒有右子樹,而且是父節點的左子樹,那下乙個結點就是父節點
當該結點沒有右子樹,而且是父節點的右子樹,那就向上尋找直到是某個父節點的左子樹,然後改父節點就是下乙個結點,如果找到根節點還沒有找到滿足條件的父節點,那就是沒有下乙個結點
/*
public class treelinknode }*/
public class solution
if (pnode.right != null)
return pnode;
}if (pnode.next != null && pnode.next.left == pnode) else // 順著有父節點&&該節點是父節點右子樹往上找
return pnode.next; // 若沒有就返回null,next預設為null}}
}
劍指offer 二叉樹的下乙個結點
題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。using namespace std struct treelinknode class solution treelinknode nextnode n...
劍指offer 二叉樹的下乙個結點
給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。結合圖,我們可發現分成兩大類 1 有右子樹的,那麼下個結點就是右子樹最左邊的點 eg d,b,e,a,c,g 2 沒有右子樹的,也可以分成兩類,a 是父節點左孩子 e...
劍指offer 二叉樹的下乙個結點
試題 這一題的題意是以中序遍歷訪問二叉樹,現在訪問到某個給定節點,讓你求接下來訪問的節點。按照中序規則 1 如果當前節點有右子節點的話,那麼下乙個應該是該右子節點下左葉子節點 2 如果當前節點沒有右子節點的話,此時我們應該去找當前節點的父節點,如果當前節點為父節點的左子節點,那麼父節點為下一訪問節點...