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

2021-08-19 04:11:37 字數 798 閱讀 3842

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

1、若該結點存在右子樹:則下乙個結點為右子樹最左子結點(如圖節點 b、c、e )

2、若該結點不存在右子樹:

(1)該節點為父結點的左子結點,則下乙個節點為其父結點(如圖節點 d、h、f )

(2)該節點為父結點的右子結點,則沿著父結點向上遍歷,直到找到乙個結點的父結點的左子結點為該結點,則該結點的父結點為下乙個結點(如圖結點 i ,沿著父結點一直向上查詢找到 b ( b 為其父結點的左子節結點),則 b 的父結點 a 為下乙個結點)

(3)結點無父結點 ,即結點為根結點

注意父結點在定義中表示為pnode->next

/*

struct treelinknode

};*/

class solution

else

if(pnode->next !=

null

&& pnode->next->left == pnode)

else

if(pnode->next !=

null

&& pnode->next->right == pnode)

return pnode->next;

}else}};

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

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。首先判斷該結點有沒有右子結點,若有,則一直遍歷右子結點的左子節點,直至為null,則返回該左子結點 若結點沒有右子結點,則向上一層,判斷該結點是不是父結點的左孩子,若...

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

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。using namespace std struct treelinknode class solution treelinknode nextnode n...

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

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。在編寫程式之前,先縷清思路。在該題總,應該分不同情況對其進行討論。情況一 魯棒性 目標節點為空節點時返回ptr 情況二 目標節點沒有父節點且沒有右子樹時,即該節點就是...