圖解中序遍歷的線索二叉樹
阿新 • • 發佈:2018-12-25
原理不細講了,參考連結裡有。
以下圖所示的二叉樹為例:
中序遍歷的結果:
中序遍歷的線索二叉樹:
虛線箭頭為線索指標,對於所有左指標指向空的節點:將該節點的左指標指向該節點在中序遍歷中的上一節點;對於所有右指標指向空的節點,將該節點的右指標指向該節點在中序遍歷中的下一結點。線索二叉樹的中序遍歷結果:
即形成了一個特殊的雙向連結串列,之所以特殊,以6–>5為例,6–>5並不是直接到達,而是通過6–>2–>4–>5間接到達。中序遍歷的Java實現:
public static class TreeNode { int val; TreeNode left; TreeNode right; boolean isLeftThread; boolean isRightThread; TreeNode(int
參考中序遍歷的程式碼,再看線索中序遍歷的Java實現:
private TreeNode mPreNode; public void inThreadOrder(TreeNode node) { if