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

Python二叉樹的遍歷操作示例【前序遍歷,中序遍歷,后序遍歷,層序遍歷】

 更新時(shí)間:2018年12月24日 08:34:33   作者:DreamLee0625  
這篇文章主要介紹了Python二叉樹的遍歷操作,結(jié)合實(shí)例形式分析了Python針對(duì)二叉樹的前序遍歷,中序遍歷,后序遍歷,層序遍歷等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了Python二叉樹的遍歷操作。分享給大家供大家參考,具體如下:

# coding:utf-8
"""
@ encoding: utf-8
@ author: lixiang
@ email: lixiang_cn@foxmail.com
@ python_version: 2
@ time: 2018/4/11 0:09
@ more_info:
二叉樹是有限個(gè)元素的集合,該集合或者為空、或者有一個(gè)稱為根節(jié)點(diǎn)(root)的元素及兩個(gè)互不相交的、分別被稱為左子樹和右子樹的二叉樹組成。
1 二叉樹的每個(gè)結(jié)點(diǎn)至多只有二棵子樹(不存在度大于2的結(jié)點(diǎn)),二叉樹的子樹有左右之分,次序不能顛倒。
2 二叉樹的第i層至多有2^{i-1}個(gè)結(jié)點(diǎn)
3 深度為k的二叉樹至多有2^k-1個(gè)結(jié)點(diǎn);
4 對(duì)任何一棵二叉樹T,如果其終端結(jié)點(diǎn)數(shù)為N0,度為2的結(jié)點(diǎn)數(shù)為N2,則N0=N2+1
5 度是二叉樹分支樹,對(duì)于二叉樹而言有0,1,2三種取值
不管是前中后序遍歷,都是在當(dāng)前規(guī)則下,無路可走時(shí),輸出根結(jié)點(diǎn)。
"""
class TreeNode(object):
  def __init__(self, x, left=None, right=None):
    self.val = x
    self.left = left
    self.right = right
def pre_traverse(root):
  """
  根左右
  :param root:
  :return:
  """
  if not root:
    return
  print root.val,
  pre_traverse(root.left)
  pre_traverse(root.right)
def mid_travese(root):
  """
  左根右
  :param root:
  :return:
  """
  if not root:
    return
  mid_travese(root.left)
  print root.val,
  mid_travese(root.right)
def after_travese(root):
  """
  左右根
  :param root:
  :return:
  """
  if not root:
    return
  after_travese(root.left)
  after_travese(root.right)
  print root.val,
def level_travese(root):
  if not root:
    return
  queue = []
  queue.append(root)
  while queue:
    cur = queue.pop(0)
    print cur.val,
    if cur.left:
      queue.append(cur.left)
    if cur.right:
      queue.append(cur.right)
def depth(root):
  if not root:
    return 0
  left = depth(root.left)
  right = depth(root.right)
  return max(left, right) + 1
if __name__ == '__main__':
  """
  tree是一個(gè)表示樹根節(jié)點(diǎn)的對(duì)象
  前序遍歷 1 2 4 5 8 9 11 3 6 7 10
  中序遍歷 4 2 8 5 11 9 1 6 3 10 7
  后序遍歷 4 8 11 9 5 2 6 10 7 3 1
  層序遍歷 1 2 3 4 5 6 7 8 9 10 11
  深度 5
  """
  tree = TreeNode(1, TreeNode(2, TreeNode(4), TreeNode(5, TreeNode(8), TreeNode(9, left=TreeNode(11)))), TreeNode(3, TreeNode(6), TreeNode(7, left=TreeNode(10))))
  print("\n前序遍歷")
  pre_traverse(tree)
  print("\n中序遍歷")
  mid_travese(tree)
  print("\n后序遍歷")
  after_travese(tree)
  print("\n層序遍歷")
  level_travese(tree)
  print("\n深度")
  print(depth(tree))

運(yùn)行結(jié)果:

前序遍歷
1 2 4 5 8 9 11 3 6 7 10
中序遍歷
4 2 8 5 11 9 1 6 3 10 7
后序遍歷
4 8 11 9 5 2 6 10 7 3 1
層序遍歷
1 2 3 4 5 6 7 8 9 10 11
深度
5

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

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

相關(guān)文章

  • Python利用Turtle庫繪制一個(gè)小老虎

    Python利用Turtle庫繪制一個(gè)小老虎

    虎年就是要畫老虎!本文將通過Python中的Turtle庫繪制一個(gè)可愛的小老虎,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-02-02
  • python pymysql peewee關(guān)于時(shí)區(qū)問題分析

    python pymysql peewee關(guān)于時(shí)區(qū)問題分析

    這篇文章主要為大家介紹了python pymysql peewee關(guān)于時(shí)區(qū)問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • pytorch 梯度NAN異常值的解決方案

    pytorch 梯度NAN異常值的解決方案

    這篇文章主要介紹了pytorch 梯度NAN異常值的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python輸入多行的方法總結(jié)

    python輸入多行的方法總結(jié)

    Python中的Input()函數(shù)在輸入時(shí),遇到回車符,那么一次輸入就結(jié)束了,這不能滿足輸入多行文本并且行數(shù)也不確定的情形,當(dāng)然輸入空行也是允許的,本文給大家總結(jié)了python輸入多行的方法,需要的朋友可以參考下
    2024-04-04
  • python下載的庫包存放路徑

    python下載的庫包存放路徑

    在本篇文章里小編給大家整理的是一篇關(guān)于python下載的庫包存放路徑,需要的朋友們可以參考學(xué)習(xí)下。
    2020-07-07
  • Jupyter Notebook 安裝配置與使用詳解

    Jupyter Notebook 安裝配置與使用詳解

    這篇文章主要介紹了Jupyter Notebook 安裝配置與使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解Python如何實(shí)現(xiàn)Excel數(shù)據(jù)讀取和寫入

    詳解Python如何實(shí)現(xiàn)Excel數(shù)據(jù)讀取和寫入

    這篇文章主要為大家詳細(xì)介紹了python如何實(shí)現(xiàn)對(duì)EXCEL數(shù)據(jù)進(jìn)行讀取和寫入,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 使用Python快速生成chrome插件相關(guān)文件結(jié)構(gòu)

    使用Python快速生成chrome插件相關(guān)文件結(jié)構(gòu)

    本文主要介紹了如何使用Python編寫一個(gè)程序,它允許用戶創(chuàng)建一些特定文件并將它們保存在指定的文件夾中,同時(shí)也能夠啟動(dòng)?Google?Chrome?瀏覽器并打開擴(kuò)展頁面,感興趣的可以了解一下
    2024-11-11
  • Python簡(jiǎn)單實(shí)現(xiàn)自動(dòng)刪除目錄下空文件夾的方法

    Python簡(jiǎn)單實(shí)現(xiàn)自動(dòng)刪除目錄下空文件夾的方法

    這篇文章主要介紹了Python簡(jiǎn)單實(shí)現(xiàn)自動(dòng)刪除目錄下空文件夾的方法,涉及Python針對(duì)文件與目錄的讀取、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • 跟老齊學(xué)Python之復(fù)習(xí)if語句

    跟老齊學(xué)Python之復(fù)習(xí)if語句

    是否記得,在上一部分,有一講專門介紹if語句的:從if開始語句的征程。在學(xué)習(xí)if語句的時(shí)候,對(duì)python編程的基礎(chǔ)知識(shí)了解的還不是很多,或許沒有做什么太復(fù)雜的東西。本講要對(duì)它進(jìn)行一番復(fù)習(xí),通過復(fù)習(xí)提高一下。如果此前有的東西忘記了,建議首先回頭看看前面那講。
    2014-10-10

最新評(píng)論

都匀市| 平湖市| 依安县| 尼玛县| 会昌县| 舟曲县| 红安县| 临湘市| 黑龙江省| 宁海县| 新蔡县| 南平市| 商丘市| 兴国县| 余庆县| 庆阳市| 松江区| 湟源县| 加查县| 新绛县| 永康市| 建湖县| 都安| 铜山县| 新干县| 南召县| 营口市| 寿光市| 通河县| 策勒县| 云安县| 喀喇| 深泽县| 洛阳市| 喀什市| 视频| 施秉县| 嵊州市| 西华县| 子长县| 苏州市|