26 二叉搜尋樹與雙向鍊錶

2022-09-07 07:42:06 字數 1234 閱讀 1246

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

**********python**********

#

class treenode:

#def __init__(self, x):

#self.val = x

#self.left = none

#self.right = none##

#@param prootoftree treenode類

#@return treenode類

#class

solution:

def__init__

(self):

self.head =none

self.pre =none

defconvert(self , prootoftree ):

#write code here

defdfs(prootoftree):

if prootoftree is

none:

return

dfs(prootoftree.left)

prootoftree.left =self.pre

ifself.pre:

self.pre.right =prootoftree

self.pre =prootoftree

if self.head is

none:

self.head =prootoftree

dfs(prootoftree.right)

dfs(prootoftree)

return self.head

**********j**a*****====

public

class

treenode

}public

class

solution

private

void

converthelper(treenode node)

converthelper(node.left);

node.left =pre;

if (pre != null

) pre =node;

if (head == null

) converthelper(node.right);

}}

26 二叉搜尋樹與雙向鍊錶

題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶,要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的特點是左子樹的值小於等於根結點,右子樹的值大於等於根結點 每個節點都有指向左子結點的指標和指向右子結點的指標 雙向鍊錶結點的結構 pprev data pnext...

26 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的中序遍歷是從小到大排序的。所以得利用中序遍歷,將左指標指向前乙個元素,右指標指向下乙個元素。所以需要遞迴裡需要有乙個變數表示前乙個節點。注意,需要用指標的指標,否則值傳...

26 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。1.將左子樹構造成雙鏈表,並返回煉表頭節點。2.定位至左子樹雙鏈表最後乙個節點。3.如果左子樹煉表不為空的話,將當前root追加到左子樹鍊錶。4.將右子樹構造成雙鏈表,並返回煉表頭節點。...