找出中序遍歷順序的下乙個結點

2021-09-23 05:54:04 字數 1258 閱讀 5982

問題描述:

給定一顆二叉樹和其中乙個節點,找出中序遍歷序列的下乙個節點!樹中的每個節點有 左/右/父 三個指標域。

不是所有的節點都有其下乙個節點,所以結果可能為 null

根節點的父節點為 null

節點的定義如下:

struct treelinknode 

給定乙個二叉樹:

問題分析:

1.如目標節點有 右節點,則根據 中序遍歷的順序 「左 中 右」,下乙個節點就是目標節點的 右子樹的最左節點。

2.1.  如目標節點無 右節點,則根據 中序遍歷的順序 「左 中 右」,下乙個節點在目標節點的上方。如果目標節點為其父節點的左節點,則目標節點的父節點就是下乙個節點。

2.2.  如目標節點無 右節點,則根據 中序遍歷的順序 「左 中 右」,下乙個節點在目標節點的上方。如果目標節點為其父節點的右節點,則我們可以沿著父指標域一直向上遍歷,直到找到乙個是它父節點的左子節點,如果有這樣的節點,那麼這個節點的父節點就是我們要找的下乙個節點。

**實現如下:

treelinknode* getnext(treelinknode* pnode)

else if(pnode->next != null)//目標節點的父節點存在(在分析中已知右節點不存在)

//如未進入上述迴圈則說明

//說明1. 此節點可能就是根節點

//說明2. 此節點可能是其父節點的左節點

pnext = pparent;

}return pnext; //返回可能為null,也可能為有效節點

}

js找出中序遍歷的下乙個子節點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。下圖中序遍歷為 dbfegac 1.當前節點可能為上圖的d,則下乙個節點為b,return b 2.當前節點可能為上圖的g,則下一節點為a,return afunct...

中序遍歷查詢下乙個節點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。思路 就是只考慮當前節點的右邊,父親部分。public class treelinknode 解題思路 如果乙個節點的右子樹不為空,那麼該節點的下乙個節點是右子樹的最...

求中序遍歷的下乙個節點

出處 node findinordersuccessor node root,node target if s.empty else if prev target prev cur cur cur right return null 另外一種原創解法,假設輸入引數只有乙個,所求的為輸入引數的下乙個節...