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

2021-09-26 21:52:27 字數 913 閱讀 4679

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

解題思路:使用乙個頭指標和尾指標標記某子樹形成的雙向鍊錶的頭尾節點。將左子樹轉換成雙向鍊錶,然後將根節點與雙向鍊錶的尾節點連線,再與右子樹轉換成的雙向鍊錶連線即可。

參考文件:

python**如下:

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

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def __init__(self):

self.head = none

self.tail = none

def convert(self, prootoftree):

# write code here

if not prootoftree:

return none

self.convert(prootoftree.left)

if not self.head:

self.head = prootoftree

self.tail = prootoftree

else:

self.tail.right = prootoftree

prootoftree.left = self.tail

self.tail = prootoftree

self.convert(prootoftree.right)

return self.head

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

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

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

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

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

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