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

2021-10-19 13:15:33 字數 797 閱讀 9938

//樹的結構

struct treelinknode

};

一.如果乙個節點有右子樹,那麼它的下乙個節點就是它的右子樹中的最左子節點。也就是說從右子節點出發一直沿著指向左子節點的指標,就能找到它的下乙個節點。如b的下乙個節點為h,a的下乙個節點為f

二.1如果乙個節點既沒有右子樹,並且它還是父節點的左子節點,那麼它的下乙個節點就是它的父節點

​ 2.如果乙個節點既沒有右子樹,並且它還是父節點的右子節點,這種情況比較複雜,可以沿著指向父節點的指標一直向上遍歷,直到找到乙個是它父節點的左子節點的節點,如果這樣的結點存在,那麼這個結點的父結點就是我們要找的下乙個結點。例如,為了找到結點i的下乙個結點,我們沿著指向父結點的指標,到達結點e。由於結點e是他父結點b的右結點,我們繼續向上遍歷到達結點b。結點b是它父節點a的左子結點。因此,結點a就是結點i的下乙個結點。

class

solution

else

if(pnode-

>parent !=

null

)//二.2 結點是其父結點的左子結點,那麼它的下乙個結點就是其父結點

res = parentnode;

}return res;}}

;

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

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

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

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

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

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