国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python二叉搜索樹與雙向鏈表轉換算法示例

2020-02-16 01:27:08
字體:
來源:轉載
供稿:網友

本文實例講述了Python二叉搜索樹與雙向鏈表轉換算法。分享給大家供大家參考,具體如下:

題目描述

輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。

普通的二叉樹也可以轉換成雙向鏈表,只不過不是排序的

思路:

1. 與中序遍歷相同

2. 采用遞歸,先鏈接左指針,再鏈接右指針

代碼1,更改doubleLinkedList,最后返回list的第一個元素:

class TreeNode:  def __init__(self, x):    self.val = x    self.left = None    self.right = Noneclass Solution:  def lastElem(self, list):    if len(list) == 0:      return None    else: return list[len(list) - 1]  def ConvertCore(self, pRoot, doubleLinkedList):    if pRoot:      if pRoot.left:        self.ConvertCore(pRoot.left, doubleLinkedList)      pRoot.left = self.lastElem(doubleLinkedList)      if self.lastElem(doubleLinkedList):        self.lastElem(doubleLinkedList).right = pRoot      doubleLinkedList.append(pRoot)      if pRoot.right:        self.ConvertCore(pRoot.right, doubleLinkedList)  def Convert(self, pRootOfTree):    if pRootOfTree == None:      return None    doubleLinkedList = []    self.ConvertCore(pRootOfTree, doubleLinkedList)    return doubleLinkedList[0]

代碼2,lastListNode指向雙向鏈表中的最后一個節點,因此每次操作最后一個節點。這里要更改值,因此采用list的形式。

class TreeNode:  def __init__(self, x):    self.val = x    self.left = None    self.right = Noneclass Solution:  def ConvertCore(self, pRoot, lastListNode):    if pRoot:      if pRoot.left:        self.ConvertCore(pRoot.left, lastListNode)      pRoot.left = lastListNode[0]      if lastListNode[0]:        lastListNode[0].right = pRoot      lastListNode[0] = pRoot      if pRoot.right:        self.ConvertCore(pRoot.right, lastListNode)  def Convert(self, pRootOfTree):    # write code here    if pRootOfTree == None:      return None    lastListNode = [None]    self.ConvertCore(pRootOfTree, lastListNode)    while lastListNode[0].left:      lastListNode[0] = lastListNode[0].left    return lastListNode[0]

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淮安市| 竹北市| 汝阳县| 苗栗市| 家居| 平泉县| 白朗县| 扬中市| 宜良县| 乌鲁木齐市| 淄博市| 罗定市| 长垣县| 屏山县| 湛江市| 昌图县| 凉城县| 得荣县| 密云县| 五指山市| 乐平市| 镇沅| 五大连池市| 泰顺县| 唐海县| 高邮市| 海城市| 周宁县| 杭锦后旗| 集安市| 拉孜县| 永和县| 三门县| 乌海市| 鄄城县| 盱眙县| 宿松县| 咸阳市| 城口县| 邯郸市| 屏东市|