劍指offer 二叉搜尋樹與雙向鍊錶

2022-08-10 08:42:13 字數 694 閱讀 3924

二叉搜尋樹與雙向鍊錶

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

利用中序遍歷法,記錄乙個前驅結點,然後將當前結點的左孩子指向前驅節點,這樣的話,向左<---表示逆序,然後將前驅結點的右孩子指向當前節點-->,可以形成正序。

在這裡記錄的前驅節點不能在方法內部傳遞,不知道為什麼

/**

public class treenode }*/

public class solution

return res;

}public void inorder(treenode root)else

inorder(root.right);

}}

這樣就不對,但是看c++的**就是這樣的,而且執行也正確,想不通

public class solution 

return res;

}public void inorder(treenode root, treenode pre)

}

可以ac的c++**

class solution 

void converthelper(treenode* cur, treenode*& pre)

};

劍指offer 二叉搜尋樹與雙向連線

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。普通的二叉樹也可以轉換成雙向鍊錶,只不過不是排序的 思路 與中序遍歷相同 採用遞迴,先鏈結左指標,再鏈結右指標 1,更改doublelinkedlist,最後返回list的第乙...

《劍指offer》 二叉搜尋樹與雙向鍊錶

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。解法 主要應用到二叉樹的中序遍歷。將左子樹遍歷進行不斷壓棧,然後再出棧。用兩個指標,current指向當前的樹的節點,pre指向前乙個節點,然後進行改指標引用,把壓棧的節點進行...

《劍指offer》二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向 輸入一棵二叉搜尋樹 將該二叉搜尋樹轉換成乙個排序的雙向鍊錶 struct treenode class solution 按照中序遍歷,按照左子樹 根節點 右子樹的順序。include ...