給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。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 情況二 目標節點沒有父節點且沒有右子樹時,即該節點就是...