給定一棵二叉樹的其中乙個節點,請找出中序遍歷序列的下乙個節點。
注意:
如果給定的節點是中序遍歷序列的最後乙個,則返回空節點;
二叉樹一定不為空,且給定的節點一定不是空節點;
樣例
假定二叉樹是:[2, 1, 3, null, null, null, null]
, 給出的是值等於2
的節點。
則應返回值等於3
的節點。
解釋:該二叉樹的結構如下,2 的後繼節點是 3。
2 / \
1 3
先判斷該結點是否有右孩子,如果有右孩子的話,中序遍歷的下個結點肯定在右子樹上——要麼是右子樹的根結點,要麼是右子樹的最左葉子結點。
沒有右孩子,則需要根據父結點來判斷:該結點是父結點的左孩子還是右孩子
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
return p;
}while
(p.father != null && p.father.right == p)
return p.father;
}}
面試題8 二叉樹的下乙個結點
面試題8 二叉樹的下乙個結點 樹中的結點除了有兩個分別指向左右子結點的指標以外,還有乙個指向父結點的指標。二叉樹的結構體定義如下。以上圖為例,節點有沒有左子樹不影響,因為左子樹肯定會在節點之前被遍歷。如果輸入節點有右子樹,比如根節點a有右子樹c,但是節點c可能是其他左子樹的根節點,所以中序遍歷不能選...
面試題8 二叉樹的下乙個結點
面試題8 二叉樹的下乙個結點 樹中的結點除了有兩個分別指向左右子結點的指標以外,還有乙個指向父結點的指標。二叉樹的結構體定義如下。以上圖為例,節點有沒有左子樹不影響,因為左子樹肯定會在節點之前被遍歷。如果輸入節點有右子樹,比如根節點a有右子樹c,但是節點c可能是其他左子樹的根節點,所以中序遍歷不能選...
二叉樹的下乙個結點
這幾天由於一些原因沒及時更新部落格,抽時間來寫寫資料結構。這次是去尋找二叉樹的下乙個節點。總體思路最開始依舊是遞迴,但是比較困難,因此還是來畫圖分析。節點有指向父節點的指標next,節點類為 public class treelinknode 中序遍歷是按照 左 根 右 的規律來遍歷的。也就是如果指...