輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
# -*- 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...