題目描述:給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
解題思路:中序遍歷的順序是「左子樹–>根節點–>右子樹」,因此有兩種情況:
(1)該節點有右子樹,那麼該節點中序遍歷的下乙個節點是右孩子的最左子節點;
(2)該節點沒有右子樹,這時候該節點中序遍歷的下乙個節點必定是其祖先節點(不一定是父親節點),這時候有兩種情況:一種情況是該節點是其父親節點的左孩子,那麼其父親節點是中序遍歷的下乙個節點;另一種情況是該節點是其父親節點的右孩子,那麼沿著父親節點的指標一直向上遍歷,知道找到乙個是它父親節點的左孩子的節點,如果這個節點存在,那麼這個節點的父親節點就是中序遍歷的下乙個節點。
實現**:
public treelinknode getnext
(treelinknode pnode)
else
}return null;
}
劍指offer 08 二叉樹的下乙個結點
08.二叉樹的下乙個結點 給定乙個二叉樹和其中的乙個結點,請找出中序遍 歷順序的下乙個結點並且返回。注意,樹中的結點不僅包 含左右子結點,同時包含指向父結點的指標。根據中序遍歷的規則 先遞迴左子樹取左結點,取根結點,後遞迴右子樹取右結點 我們可以倒過來討論以下情況 1,如果結點 a,b,c,e 有右...
劍指offer 08 二叉樹的下乙個節點
劍指offer第8題,本來想找leetcode上對應的題,後來沒找到,直接去牛客網上刷了。給定乙個二叉樹和其中的乙個結點 pnode 請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。我看到這道題的第乙個想法,就是不用管左子樹。因為中序遍歷,左子樹...
劍指offer 二叉樹 二叉樹搜尋樹
package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...