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

2021-09-11 23:13:55 字數 776 閱讀 5141

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

中序遍歷可以得到二叉搜尋樹的從小到大排序,存在列表裡

class solution:

def convert(self, prootoftree):

# write code here

if not prootoftree:

return none

self.node_list =

self.midorder(prootoftree)

if len(self.node_list) > 1:

for i in range(1, len(self.node_list) - 1):

self.node_list[i].left = self.node_list[i - 1]

self.node_list[i].right = self.node_list[i + 1]

self.node_list[0].right = self.node_list[1]

self.node_list[-1].left = self.node_list[-2]

return self.node_list[0]

def midorder(self, root):

if not root:

return

self.midorder(root.left)

self.midorder(root.right)

劍指offer第23題 二叉搜尋樹的後序遍歷序列

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 左節點,右節點,根節點是後序遍歷的順序。那麼,左子樹都小於根節點,右子樹都大於根節點。public class solution private ...

劍指offer第24題 二叉搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的陣列的任意兩個數字都互不相同。5 2 6 1 3 示例 1 輸入 1,6,3,2,5 輸出 false 示例 2 輸入 1,3,2,6,5 輸出 true 陣列長度 1000 思路 ...

劍指offer第33題 二叉搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回 true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。5 2 6 13示例 1 輸入 1 6,3 2,5 輸出 false 示例 2 輸入 1 3,2 6,5 輸出 true 二叉搜尋樹的特點是左子樹小於根節...