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

2021-10-02 09:23:04 字數 725 閱讀 9442

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

二叉搜尋樹的所有左孩子都比當前節點小,所有右孩子都比當前節點大。

這道題的精髓是遞迴**,假設前後節點都已經排好了;

當前節點如果有右子樹的話,那麼當前節點的right指標指向prootoftree.right鍊錶的頭節點,即convert(prootoftree.right),該節點的left指向當前節點;

當前節點如果有右子樹的話,那麼當前節點的left指標指向prootoftree.left鍊錶的尾節點,即convert(prootoftree.right)一直向後找,直到找到最後乙個節點,該節點的right指向當前節點;

返回當前節點所在鍊錶的頭節點:如果當前節點有左孩子,則返回左孩子所在鍊錶的頭節點,如果當前節點沒有左孩子,則返回當前節點。

/**

public class treenode }*/

public

class

solution

if(prootoftree.left != null)

temp2.right = prootoftree;

prootoftree.left = temp2;

prootoftree = head;

}return prootoftree;

}}

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

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

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

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

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

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