三種遍歷下,二叉樹的下乙個結點

2021-09-09 07:39:42 字數 1905 閱讀 2434

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

/*

* 中序遍歷 思路:

* (2) 若該節點不存在右子樹:這時分兩種情況:

* 2.1 該節點為父節點的左子節點,則下乙個節點為其父節點(如圖節點 d )

* 2.2該節點為父節點的右子節點,則沿著父節點向上遍歷,直到找到乙個節點的父節點的左子節點為該節點, 則該節點的父節點下乙個節點(如圖節點 i,沿著父節點一直向上查詢找到 b ( b 為其父節點的左子節點),則 b 的父節點 a 為下乙個節點)。

*/public treelinknode getnext(treelinknode pnode)

// 該節點有右子樹,下一節點為右子樹最左節點

if (pnode.right != null)

return pnode;

} // 該節點無右子樹,

while (pnode.next != null)

// 改節點是父節點的右子樹,向上繼續找到直到該節點是父節點的左子節點

if (proot.right == pnode)

} // 直到為根節點時,則返回null

return null; }

/*** 前序遍歷

* 1.只有根節點時,節點為空時(節點a)

* 2.有左子節點時,直接返回左子節點

* 3.無左子節點時,向上遍歷父節點知道得到右子節點

* 這裡有乙個特殊情況,就是當該節點本身就是右子節點時,需要儲存自身,在往上遍歷

* * */

public treelinknode getnextbyfirst(treelinknode pnode)

// 只有根節點的情況(節點a)

if (pnode.next == null && pnode.left == null && pnode.right == null)

// 如果有左子節點,直接返回(節點bce)

if (pnode.left != null)

// 標記當前節點

treelinknode p = pnode;

// 當前節點無左子節點時,

while (pnode != null) else

} return null; }

/*** 後序遍歷--左右根

* *

* * */

public treelinknode getnextbylast(treelinknode pnode)

// 該節點為右子樹上的節點,且該節點無子節點,則後序遍歷的下乙個節點是該節點的父節點

if (pnode.left == null && pnode.right == null)

// 該節點有右兄**樹

else

// 左子節點為空,右子節點不為空

else if (pnode.right != null)

// 左右子節點都為空

else }}

}}

// 該節點為父節點的左子節點

if (pnode.left != null && pnode.right != null

&& pnode.next.left == pnode)

// 該節點有右兄**樹

else

// 左子節點為空,右子節點不為空

else if (pnode.right != null)

// 左右子節點都為空

else }}

} // 該節點為父節點的右子節點,則返回父節點,節點i,

if (pnode.next.right == pnode)

return pnode;

}

二叉樹的下乙個結點

這幾天由於一些原因沒及時更新部落格,抽時間來寫寫資料結構。這次是去尋找二叉樹的下乙個節點。總體思路最開始依舊是遞迴,但是比較困難,因此還是來畫圖分析。節點有指向父節點的指標next,節點類為 public class treelinknode 中序遍歷是按照 左 根 右 的規律來遍歷的。也就是如果指...

二叉樹的下乙個結點

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。二叉樹的下乙個結點 author 過路的守望 public class getnextnode 若當前節點有右兒子,則返回右兒子的最左兒子 if node....

二叉樹的下乙個結點

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。思路 結合圖,我們可發現分成兩大類 1 有右子樹的,那麼下個結點就是右子樹最左邊的點 eg d,b,e,a,c,g 2 沒有右子樹的,也可以分成兩類,a 是...