1. 程式人生 > >劍指offer -- 二叉搜尋樹與雙向連結串列

劍指offer -- 二叉搜尋樹與雙向連結串列

題目

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。

AC程式碼

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    TreeNode lastNode = null;  //正在遍歷節點的前一個節點
public TreeNode Convert(TreeNode pRootOfTree) { convertNode(pRootOfTree); //遍歷根節點的時候,lastNode 指向的是根節點左子數的最右邊節點 TreeNode headNode = lastNode; while(headNode != null && headNode.left != null) headNode = headNode.left; //尋找真正的頭節點 return headNode; } private
void convertNode(TreeNode root){ if(root == null) return; TreeNode currNode = root; if(currNode.left != null) convertNode(currNode.left); currNode.left = lastNode; if(lastNode != null) lastNode.right = currNode; lastNode = currNode; if(currNode.
right != null) convertNode(currNode.right); } }