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

2021-09-12 21:54:25 字數 1020 閱讀 9154

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

# -*- 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;

if not prootoftree.left and not prootoftree.right:

return prootoftree

self.convert(prootoftree.left)

left=prootoftree.left

if left:

while left.right:

left=left.right

prootoftree.left , left.right=left , prootoftree

self.convert(prootoftree.right)

right=prootoftree.right

if right:

while right.left:

right=right.left

prootoftree.right, right.left=right, prootoftree

phead=prootoftree

if prootoftree:

while phead.left:

phead=phead.left

return phead

劍指offer系列26之二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路一 非遞迴法 非遞迴法主要利用了二叉樹的中序遍歷的非遞迴方法。python實現 coding utf 8 class treenode def init self,x self.va...

(十九)劍指offer之二叉搜尋樹與雙向鍊錶

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。struct treenode class solution private void convertnode treenode pnode,treenode plastnod...

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

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。本題的實質是二叉搜尋樹的中序遍歷,附帶雙向鍊錶的構建。我採取的方法是先獲取搜尋樹的中序遍歷,訪問各結點的指標,然後構建雙向鍊錶。二叉搜尋樹的中序遍歷我採用的是morris演算法,關於mo...