劍指Offer 樹 二叉樹與雙向鍊錶

2021-08-21 10:48:57 字數 367 閱讀 1726

要把一棵二叉樹轉變成雙向鍊錶,二叉樹和雙向鍊錶很類似,每個節點都是包括乙個值和兩個指標。針對這題,思路還是遞迴,選擇的是樹的中序遍歷,中序遍歷是按照從小到大的順序遍歷二叉搜尋樹的每乙個節點,得出來的序列是有序的,注意只有二叉搜尋樹才有這個特性。

這道題最重要的過程在於調整原來樹節點的指標,使得當前節點的左指標指向前乙個節點,右指標指向後乙個節點。重要的是要記錄遍歷到的當前節點在跳幀後鍊錶中的位置。

**:

treenode* convert(treenode* prootoftree)

return head;

}void convertcore(treenode* proot,treenode **last)

劍指offer 二叉樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。1 乙個小點,二叉搜尋樹即為二叉排序樹,中序遍歷的結果為乙個遞增的陣列,因此這個題首先基本思路是進行二叉樹的中序遍歷。二叉樹中序遍歷遞迴的 如下 void midorder treeno...

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

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。這道題太難了,我不會做t t,直接引入參 吧。coding utf 8 class treenode def init self,x self.val x self.left ...

劍指offer題解(二叉樹與雙向鍊錶)

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。中序遍歷搜尋二叉樹,用pre儲存中序遍歷的前乙個節點,cur為當前節點,然後使pre right cur,cur left pre 注意pre要宣告為常指標,初始時pre為空 最後從根節...