劍指offer刷題記錄26——二叉搜尋樹與雙向連結串列
阿新 • • 發佈:2018-12-21
題目描述
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
public class Solution { public TreeNode Convert(TreeNode root) { //正常的空值判斷 if(root == null) return null; if(root.left == null && root.right == null) return root; //1、處理左邊的子樹 TreeNode left = Convert(root.left); TreeNode p = left; while(p != null && p.right != null){ p = p.right; } //(1)左子樹最後一個結點增加右邊指向根結點的指標 if(left != null){ p.right = root; root.left = p; } //2、處理右邊的子樹 TreeNode right = Convert(root.right); //(2)右子樹的第一個一個結點增加左邊指向根結點的指標 if(right != null){ right.left = root; root.right = right; } return left != null ? left : root; } }