劍指Offer(57) 二叉樹的下乙個結點

2021-09-17 19:59:27 字數 1072 閱讀 6688

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

分三種情況:

1)如果當前結點有右子樹,那麼它的下乙個結點就是它的右子樹的最左子結點;

2)如果當前結點沒有右子樹,且為它父結點的左子結點,那麼它的下乙個結點就是它的父結點;

3)如果當前結點沒有右子樹,且為它父結點的右子結點,則一直向上遍歷,直到找到乙個是它父結點的左子結點的結點。

例如:[1]

[2]   [3]

[4] [5] [6] [7]

中序遍歷序列為:

第一種情況:當前結點有右子樹,如1,那麼它的下乙個結點就是它的右子樹的最左子結點,為6

[1]

[2]   [3]

[4] [5] [6] [7]

第二種情況:當前結點沒有右子樹,且為它父結點的左子結點,如4,那麼它的下乙個結點就是它的父結點,為2

[1][2]   [3]

[4] [5] [6] [7]

第三種情況:當前結點沒有右子樹,且為它父結點的右子結點,如5,則一直向上遍歷,直到找到乙個是它父結點的左子結點的結點,為1

[1]

[2]   [3]

[4] [5] [6] [7]

public

class

solution

// 如果結點有右子樹,那麼它的下乙個結點就是它的右子樹的最左子結點

if(pnode.right != null)

return pnode;

}// 結點沒有右子樹

while

(pnode.next != null)

// 如果結點是它父結點的右子結點,則一直向上遍歷,直到找到乙個是它父結點的左子結點的結點

pnode = pnode.next;

}return null;

}}

劍指offer57 二叉樹的下乙個結點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。coding utf 8 class treelinknode def init self,x self.val x self.left none self.righ...

劍指offer 57 二叉樹的下乙個結點

1.題目描述給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。2.解題思路情況1 該節點有右子樹 6 3 10 2 5 8 12中序遍歷結果為 2 3 5 6 8 10 12 即它的下乙個結點就是它的右子樹中最左子結...

劍指offer 57 二叉樹的下乙個結點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。1 如果該結點有右子樹,那麼它的下乙個結點就是它右子樹的最左子節點 2 如果該結點沒有右子樹 1 如果是它父節點的左子節點,那麼它的下乙個結點就是它的父節點 2 如果...