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

2021-10-23 07:45:46 字數 776 閱讀 7121

給定乙個二叉樹和其中乙個節點,如何找出中序遍歷的下乙個節點?樹中的節點除了有兩個分別指向左、右子節點的指標,還有乙個指向父親點的指標

如圖所示的中序遍歷序列為:

如果有右子樹——【下乙個節點】[右子樹中的最左節點]

沒有右子樹如果這個節點是它父節點的左子節點——【下乙個節點】[父親節點]

如果這個節點時它父親節點的右子節點——【下乙個節點】[找到父

節點的左

節點的節

點\color 找到父節點的左節點的節點

找到父節點的

左節點的

節點——返回父節點]

// 需要沿著father域一直向上找,找到第乙個是其father左兒子的節點,該節點的father就是當前節點的後繼

while(p->father && p!=p->father->left) p = p->father;

return p->father;}};

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

include include includetypedef int datatype typedef struct bstreenode bstreenode bstreenode createnode int data 首先利用棧實現二叉樹的非遞迴中序遍歷,從根結點開始,當根結點不為空或者棧不為...

劍指Offer 8 二叉樹的下乙個節點

給定一棵二叉樹和其中的乙個結點,如何找出中序遍歷順序的下乙個結點?樹中的結點除了有兩個分別指向左右子結點的指標以外,還有乙個指向父結點的指標。主要分為兩種情況 如果乙個節點的右子樹不為空,那麼在中序遍歷的下乙個節點就是其 右子樹的最左節點 如果乙個節點的右子樹為空,那麼在中序遍歷的下乙個節點就是其 ...

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

給定乙個二叉樹和其中乙個節點,找出該節點在中序遍歷序列中的下乙個節點。注意 樹中的節點除了有兩個分別指向左右子節點的指標,還有乙個指向父節點的指標。如果給定的節點是中序遍歷序列的最後乙個,則返回空節點。二叉樹一定不為空,且給定的節點一定不是空節點。分情況討論即可,如下圖所示 如果當前節點有右孩子,則...