資料結構演算法 二叉搜尋樹轉雙向鍊錶

2021-09-13 21:13:12 字數 1390 閱讀 8791

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

就是簡單的乙個二叉樹中序遍歷,

主要是明白什麼是二叉搜尋樹

二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。)

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

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

: @staticmethod

defconvert

(prootoftree)

:# write code here

if prootoftree is

none

:return

none

elif prootoftree.left is

none

and prootoftree.right is

none

:return prootoftree

else

: p_l=solution.convert(prootoftree.left)

p_r=solution.convert(prootoftree.right)

if p_l is

none

and p_r is

notnone

: prootoftree.right=p_r

p_r.left=prootoftree

return prootoftree

l_head=p_l

while p_l.right is

notnone

: p_l=p_l.right

p_l.right=prootoftree

prootoftree.left=p_l

prootoftree.right=p_r

if p_r is

notnone

: p_r.left=prootoftree

return l_head

二叉搜尋樹轉雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。二叉搜尋樹的中序遍歷是從小到大排列的,那麼只要設定乙個 pre節點 來儲存開頭,按照中序遍歷的方式把樹組裝成雙向鍊錶就可以了。但是這樣做完以後,pre節點 就到達了雙向鍊錶的末尾位置,需...

二叉搜尋樹c 資料結構二叉搜尋樹

在n個動態的整數中搜尋某個整數?檢視其是否存在 假設使用動態陣列存放元素,從第 0 個位置開始遍歷搜尋,平均時間複雜度 o n 如果維護乙個有序的動態陣列,使用二分搜尋,最壞時間複雜度 o logn 但是新增 刪除的平均時間複雜度是 o n 針對這個需求,有沒有更好的方案?今天我們主要講的就是二叉搜...

演算法 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。二叉樹類public class treenode 分析 二叉搜尋樹的定義 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它...