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

2021-09-24 10:38:07 字數 781 閱讀 2715

題目描述

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。

注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

思路圖中的二叉樹的中序遍歷序列是,我們以這棵樹為例來分析如何找出二叉樹的下乙個結點。

如果乙個結點有右子樹,那麼它的下乙個結點就是右子樹的最左子結點。例如,圖中結點b的下乙個結點是h,結點a的下乙個結點是f。

如果乙個結點沒有右子樹,且該結點是其父結點的左子結點,那麼它的下乙個結點就是其父結點。例如,圖中結點d的下乙個結點是b,結點f的下乙個結點是c。

如果結點是其父結點的右子結點,可以沿著指向父結點的指標一直向上遍歷,直到找到乙個是它父結點的左子結點的結點,如果這樣的結點存在,那麼這個結點的父結點就是我們要找的下乙個結點。例如,為了找到結點i的下乙個結點,我們沿著指向父結點的指標,到達結點e。由於結點e是他父結點b的右結點,我們繼續向上遍歷到達結點b。結點b是它父節點a的左子結點。因此,結點a就是結點i的下乙個結點。

struct treelinknode };

class

solution

else

if(pnode-

>parent)

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

res = parentnode;

}return res;}}

;

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

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

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

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

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

struct treelinknode class solution return currnode case two the node does not has right son,it is the left son of its father if pnode next null return...