給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
我們知道二叉樹的中序遍歷是先遍歷左子樹,然後遍歷根結點,最後遍歷右子樹。根據題意,我們需要找到當前節點的下乙個需要遍歷的結點,首先判斷該結點是否存在右子樹,如果存在,那麼下乙個結點一定在其右子樹中,且是右子樹中第乙個沒有左孩子的結點(每乙個有左孩子的結點,就需要遍歷其左子樹)。如果結點沒有右子樹,那麼如果該結點是父結點的左孩子,那麼下乙個結點就是其父結點;如果當前結點是父結點的右孩子,那麼繼續往上找到父結點的父結點,直到找到乙個結點是父結點的左孩子的結點,那麼其父結點就是下乙個結點,如果一直遍歷到根結點也沒有找到存在結點是父結點的左孩子的結點,那麼當前給定結點是二叉樹中序遍歷的最後的結點,下乙個結點就是null。
/*樹結點定義*/
public class treelinknode
}/*實現*/
public class solution
return p;
}p = pnode.next; //指向父結點
while (p != null)
return p;
}}
劍指offer57 二叉樹的下乙個結點
給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。coding utf 8 class treelinknode def init self,x self.val x self.left none self.righ...
劍指Offer(57) 二叉樹的下乙個結點
給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。分三種情況 1 如果當前結點有右子樹,那麼它的下乙個結點就是它的右子樹的最左子結點 2 如果當前結點沒有右子樹,且為它父結點的左子結點,那麼它的下乙個結點就是它的父結...
劍指offer 57 二叉樹的下乙個結點
1.題目描述給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。2.解題思路情況1 該節點有右子樹 6 3 10 2 5 8 12中序遍歷結果為 2 3 5 6 8 10 12 即它的下乙個結點就是它的右子樹中最左子結...