問題描述:
給定一顆二叉樹和其中乙個節點,找出中序遍歷序列的下乙個節點!樹中的每個節點有 左/右/父 三個指標域。
不是所有的節點都有其下乙個節點,所以結果可能為 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 另外一種原創解法,假設輸入引數只有乙個,所求的為輸入引數的下乙個節...