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

2021-10-20 12:30:48 字數 641 閱讀 5587

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

思路1:不要整花裡胡哨的,直接暴力幹它

既然說要找中序遍歷的下乙個,我們就把中序遍歷寫出來。

那麼問題來了,這裡給的結點是二叉樹的某個結點而不一定是它的根節點,因此我們就要先把根節點找出來才能進行中序遍歷。

題目的結點給出了指向父節點的指標,那麼根節點是沒有父節點的,因此我們一直向上迭代就行了。

找出來根結點,進行中序遍歷,存入乙個陣列。

再遍歷一次找到題目給的結點,再輸出下乙個,這裡注意最末尾的下乙個是空,需要多加乙個判斷。

實現:

class

solution

treelinknode*

getnext

(treelinknode* pnode)

vector> v;

dfs(p,v)

;//中序遍歷

for(

int i=

0;isize()

;i++

)return

nullptr;}

};

思路2:

分情況討論

劍指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 即它的下乙個結點就是它的右子樹中最左子結...