欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本文實例講述了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:
二叉樹是有限個元素的集合,該集合或者為空、或者有一個稱為根節(jié)點(root)的元素及兩個互不相交的、分別被稱為左子樹和右子樹的二叉樹組成。
1 二叉樹的每個結點至多只有二棵子樹(不存在度大于2的結點),二叉樹的子樹有左右之分,次序不能顛倒。
2 二叉樹的第i層至多有2^{i-1}個結點
3 深度為k的二叉樹至多有2^k-1個結點;
4 對任何一棵二叉樹T,如果其終端結點數(shù)為N0,度為2的結點數(shù)為N2,則N0=N2+1
5 度是二叉樹分支樹,對于二叉樹而言有0,1,2三種取值
不管是前中后序遍歷,都是在當前規(guī)則下,無路可走時,輸出根結點。
"""
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是一個表示樹根節(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
  """
  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))

運行結果:

前序遍歷
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

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

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

相關文章

  • Python的Tqdm模塊實現(xiàn)進度條配置

    Python的Tqdm模塊實現(xiàn)進度條配置

    這篇文章主要介紹了Python的Tqdm模塊實現(xiàn)進度條配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python OpenCV處理圖像之濾鏡和圖像運算

    Python OpenCV處理圖像之濾鏡和圖像運算

    這篇文章主要為大家詳細介紹了Python OpenCV處理圖像之濾鏡和圖像運算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python中urllib模塊用法實例詳解

    python中urllib模塊用法實例詳解

    這篇文章主要介紹了python中urllib模塊用法,以實例形式詳細分析了python中urllib模塊代替PHP的curl操作方法,具有不錯的借鑒價值,需要的朋友可以參考下
    2014-11-11
  • 基于Python實現(xiàn)一鍵找出磁盤里所有貓照

    基于Python實現(xiàn)一鍵找出磁盤里所有貓照

    最近在整理我磁盤上的照片,發(fā)現(xiàn)不少貓照,突然覺得若能把這些貓照都挑出來,觀察它們的成長軌跡也是一件不錯的事情。一張一張的找實在是太費勁了,能不能自動化地找出來呢?本文將詳細為大家講講,需要的可以參考一下
    2022-05-05
  • 如何利用Matplotlib庫繪制動畫及保存GIF圖片

    如何利用Matplotlib庫繪制動畫及保存GIF圖片

    這篇文章主要給大家介紹了關于如何利用Matplotlib庫繪制動畫及保存GIF圖片的相關資料,matplotlib模塊提供了很高級和非常友好的使用方式,使用起來也是非常方便的,需要的朋友可以參考下
    2021-06-06
  • python 雙循環(huán)遍歷list 變量判斷代碼

    python 雙循環(huán)遍歷list 變量判斷代碼

    這篇文章主要介紹了python 雙循環(huán)遍歷list 變量判斷代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 使用pandas讀取表格數(shù)據(jù)并進行單行數(shù)據(jù)拼接的詳細教程

    使用pandas讀取表格數(shù)據(jù)并進行單行數(shù)據(jù)拼接的詳細教程

    這篇文章主要介紹了使用pandas讀取表格數(shù)據(jù)并進行單行數(shù)據(jù)拼接的詳細教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 安裝python依賴包psycopg2來調(diào)用postgresql的操作

    安裝python依賴包psycopg2來調(diào)用postgresql的操作

    這篇文章主要介紹了安裝python依賴包psycopg2來調(diào)用postgresql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • python開發(fā)之IDEL(Python GUI)的使用方法圖文詳解

    python開發(fā)之IDEL(Python GUI)的使用方法圖文詳解

    這篇文章主要介紹了python開發(fā)之IDEL(Python GUI)的使用方法,結合圖文形式較為詳細的分析總結了Python GUI的具體使用方法,需要的朋友可以參考下
    2015-11-11
  • Python庫?Bokeh?數(shù)據(jù)可視化實用指南

    Python庫?Bokeh?數(shù)據(jù)可視化實用指南

    大家好,今天跟大家分享的是交互式可視化神器?Python?Bokeh?的詳細使用教程,Bokeh是一個面向現(xiàn)代web瀏覽器的交互式可視化庫。它提供了多功能圖形的優(yōu)雅、簡潔的構造,并在大型數(shù)據(jù)集或流式數(shù)據(jù)集上提供了高性能的交互性,接下來讓我們詳細看看吧
    2021-11-11

最新評論