如果當前結點有右孩子
後繼節點就是它的右子樹的最左子節點(從右子節點出發一致沿著指向左子節點的指標,即可找到)
若此節點沒有右孩子
(1) 如果當前節點是它父節點的左子節點,則後繼結點就是它的父節點
(2)如果當前節點是它父節點的右子節點
沿著指向父節點的指標一直向上遍歷,直到找到乙個是它父節點的左子節點的節點,如果這樣的節點存在,那麼這個節點的父節點就是我們要找到的下乙個節點;不存在即為null。
如:如該節點為這棵二叉樹的最右結點,此時它不存在後繼結點。
public
class
solution
return pnode;
}//若此節點非根節點,且沒有右子樹
while
(pnode.next != null)
pnode = pnode.next;
}return null;
}}
劍指offer 二叉樹的下乙個結點
題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。using namespace std struct treelinknode class solution treelinknode nextnode n...
劍指offer 二叉樹的下乙個結點
給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。結合圖,我們可發現分成兩大類 1 有右子樹的,那麼下個結點就是右子樹最左邊的點 eg d,b,e,a,c,g 2 沒有右子樹的,也可以分成兩類,a 是父節點左孩子 e...
劍指offer 二叉樹的下乙個結點
試題 這一題的題意是以中序遍歷訪問二叉樹,現在訪問到某個給定節點,讓你求接下來訪問的節點。按照中序規則 1 如果當前節點有右子節點的話,那麼下乙個應該是該右子節點下左葉子節點 2 如果當前節點沒有右子節點的話,此時我們應該去找當前節點的父節點,如果當前節點為父節點的左子節點,那麼父節點為下一訪問節點...