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

2021-08-21 14:34:02 字數 1001 閱讀 4080

問題描述:

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

解題思路:

二叉搜尋樹的中序遍歷,同時每一次增加乙個指向

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def convert(self, prootoftree):

# write code here

if not prootoftree:

return none

if not prootoftree.left and not prootoftree.right:

return prootoftree

left = self.convert(prootoftree.left)

if left:

while left.right:

left = left.right

left.right = prootoftree

prootoftree.left = left

right = self.convert(prootoftree.right)

if right:

while right.left:

right = right.left

right.left = prootoftree

prootoftree.right = right

while prootoftree.left:

prootoftree = prootoftree.left

return prootoftree

劍指offer7 重建二叉樹

輸入一棵二叉樹前序遍歷和中序遍歷的結果,請重建該二叉樹。注意 二叉樹中每個節點的值都互不相同 輸入的前序遍歷和中序遍歷一定合法 樣例 給定 前序遍歷是 3,9,20,15,7 中序遍歷是 9,3,15,20,7 返回 3,9,20,null,null,15,7,null,null,null,null...

劍指offer7 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的頭節點。根據先序序列第乙個數確定樹的根節點,在中序序列中找到這個數所在的位置,此處左邊為左子樹,右邊為右子樹,根據遞迴建立二叉樹。...

劍指offer 7 重建二叉樹

因為各種各樣的原因,要開始準備春招,所以開始刷劍指offer 第二版 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。這個是個二叉樹很基礎的題啦,需要用遞迴來實現。主要講解在書的6...