最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python二叉搜索樹與雙向鏈表轉(zhuǎn)換算法示例

 更新時間:2019年03月02日 12:07:24   作者:hustfc  
這篇文章主要介紹了Python二叉搜索樹與雙向鏈表轉(zhuǎn)換算法,涉及Python二叉樹構(gòu)建、遍歷及鏈表構(gòu)造等相關(guān)操作技巧,需要的朋友可以參考下

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

題目描述

輸入一棵二叉搜索樹,將該二叉搜索樹轉(zhuǎn)換成一個排序的雙向鏈表。要求不能創(chuàng)建任何新的結(jié)點,只能調(diào)整樹中結(jié)點指針的指向。

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

思路:

1. 與中序遍歷相同

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

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

class TreeNode:
  def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None
class 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指向雙向鏈表中的最后一個節(jié)點,因此每次操作最后一個節(jié)點。這里要更改值,因此采用list的形式。

class TreeNode:
  def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None
class 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]

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

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

相關(guān)文章

  • 樹莓派與PC端在局域網(wǎng)內(nèi)運用python實現(xiàn)即時通訊

    樹莓派與PC端在局域網(wǎng)內(nèi)運用python實現(xiàn)即時通訊

    這篇文章主要為大家詳細介紹了樹莓派與PC端在局域網(wǎng)內(nèi)運用python實現(xiàn)即時通訊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python實現(xiàn)單機五子棋對戰(zhàn)游戲

    python實現(xiàn)單機五子棋對戰(zhàn)游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)單機五子棋對戰(zhàn)游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • python pow函數(shù)的底層實現(xiàn)原理介紹

    python pow函數(shù)的底層實現(xiàn)原理介紹

    這篇文章主要介紹了python pow函數(shù)的底層實現(xiàn)原理介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • PyCharm2019 安裝和配置教程詳解附激活碼

    PyCharm2019 安裝和配置教程詳解附激活碼

    這篇文章主要介紹了PyCharm2019 安裝和配置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Selenium+Python自動化測試入門

    Selenium+Python自動化測試入門

    本文主要介紹了Selenium+Python自動化測試入門,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 如何使用python實現(xiàn)模擬鼠標點擊

    如何使用python實現(xiàn)模擬鼠標點擊

    這篇文章主要介紹了如何使用python實現(xiàn)模擬鼠標點擊,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Django基礎(chǔ)知識 web框架的本質(zhì)詳解

    Django基礎(chǔ)知識 web框架的本質(zhì)詳解

    這篇文章主要介紹了Django基礎(chǔ)知識 web框架的本質(zhì)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python讀取文件的三種方式總結(jié)

    Python讀取文件的三種方式總結(jié)

    Python的文本處理是經(jīng)常碰到的一個問題,非常重要的,這篇文章主要和大家分享的是3個Python讀取文本文件內(nèi)容的常用方法,希望對大家深入學習Python有所幫助
    2023-07-07
  • 常見的在Python中實現(xiàn)單例模式的三種方法

    常見的在Python中實現(xiàn)單例模式的三種方法

    這篇文章主要介紹了常見的在Python中實現(xiàn)單例模式的三種方法,單例模式在各個編程語言的學習中都是需要掌握的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • 基于Python和Tkinter實現(xiàn)高考倒計時功能

    基于Python和Tkinter實現(xiàn)高考倒計時功能

    隨著高考的臨近,每個考生都在緊鑼密鼓地復習,這時候,一款實用的倒計時軟件能有效幫助你規(guī)劃剩余時間,提醒你不要浪費每一分每一秒,今天,我們來聊聊一款基于Python和Tkinter開發(fā)的高考倒計時軟件,功能簡單卻極具實用性,讓你在緊張的備考過程中不再迷失
    2025-03-03

最新評論

大安市| 宜都市| 新平| 武隆县| 镇赉县| 佛山市| 普兰店市| 金昌市| 昌邑市| 蒙阴县| 仙桃市| 安化县| 崇阳县| 五台县| 鲜城| 浦北县| 牟定县| 海口市| 兰考县| 垦利县| 湖州市| 黄骅市| 阿拉善右旗| 威远县| 夏津县| 临沧市| 通城县| 富平县| 桂林市| 招远市| 儋州市| 南投市| 常宁市| 永吉县| 惠安县| 山东| 望江县| 宁强县| 页游| 南皮县| 塔河县|