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

2021-10-01 14:19:06 字數 1016 閱讀 3991

本文演算法使用python3實現

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

時間限制:1s;空間限制:32768k

class solution:

def convert(self, prootoftree):

# 借助列表

# 當二叉搜尋樹為空時

if prootoftree == none:

return none

# 當二叉搜尋樹只有乙個根節點時

if prootoftree and not prootoftree.left and not prootoftree.right:

return prootoftree

# 當二叉搜尋樹含有兩個及以上節點時

prelist =

prelist = self.preorder(prootoftree, prelist)

prelist[0].left = none

prelist[0].right = prelist[1]

for i in range(1,len(prelist)-1):

prelist[i].left = prelist[i-1]

prelist[i].right = prelist[i+1]

prelist[-1].left = prelist[-2]

prelist[-1].right = none

head = prelist[0]

return head

def preorder(self, root, prelist):

# 將節點按中序順序儲存到列表中

if root == none:

return

self.preorder(root.left, prelist)

self.preorder(root.right, prelist)

return prelist

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

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

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

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

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

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