<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      二叉樹

      1. 二叉樹的概念

        二叉樹是n個有限元素的集合,該集合或為空、或由一個根節點及兩個不相交的、被分別稱為左子樹和右子樹的二叉樹組成,是有序樹。當集合為空時,稱該二叉樹為空二叉樹。二叉樹又分為滿二叉樹和完全二叉樹

        滿二叉樹:一個二叉樹,如果每一個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,如果一個二叉樹的層數為K,且結點總數是(2^k) -1 ,則它就是滿二叉樹

        完全二叉樹:完全二叉樹是由滿二叉樹引出的。滿二叉樹要求每一層的節點數都達到最大值,完全二叉樹僅要求除最后一層外的節點數達到最大值,也就是說最后一層可以不滿。我們可以把滿二叉樹看錯特殊的完全二叉樹。

        

       

       

      2. 二叉樹的遍歷

        

       

        代碼實現: 

      # 構建節點類
      class BiTreeNode:
          def __init__(self, item):
              self.item = item
              self.leftChild = None
              self.rightChild = None
      
      # 創建樹節點
      a = BiTreeNode('A')
      b = BiTreeNode('B')
      c = BiTreeNode('C')
      d = BiTreeNode('D')
      e = BiTreeNode('E')
      f = BiTreeNode('F')
      g = BiTreeNode('G')
      
      # 模擬樹
      e.leftChild = a
      e.rightChild = g
      a.rightChild = c
      c.leftChild = b
      c.rightChild = d
      g.rightChild = f
      # 根節點
      root = e
      
      from collections import deque
      # 遍歷樹類
      class ForInBiTree:
          # 前序遍歷:以根節點為中點分為左右兩邊,從根節點出發先遍歷左邊在遍歷右邊,從上左右原則
          def pre_order(self, root):
              # 判斷是否是一個空樹
              if root:
                  print(root.item, end=',')           # 先遍歷根節點
                  self.pre_order(root.leftChild)      # 遞歸傳入左節點為參數,即往左邊走
                  self.pre_order(root.rightChild)     # 遞歸傳入右節點為參數,沒有左子樹,在往右走
      
          # 中序遍歷:以根節點為中心點,先遍歷左邊在到根節點再遍歷左邊,先左上右原則
          def cen_order(self, root):
              if root:
                  self.cen_order(root.leftChild)      # 遞歸傳入左節點為參數,即往左邊走
                  print(root.item, end=',')           # 沒有左子樹則遍歷自己
                  self.cen_order(root.rightChild)     # 在往右進行遍歷
      
          # 后序遍歷:以根節點為中心點,先遍歷左邊再遍歷右邊再根節點,從左右上原則
          def later_order(self, root):
              if root:
                  self.later_order(root.leftChild)    # 先找左邊的子節點
                  self.later_order(root.rightChild)   # 在找優點的子節點
                  print(root.item, end=',')           # 沒有則輸出當前根節點
      
          # 層次遍歷:從根節點開始,從上往下開始遍歷
          def level_order(self, root):
              # 利用隊列的先進先出原則
              queue = deque()
              queue.append(root)      # 根節點進入隊列
              while len(queue) > 0:   # 當隊列中存在元素則說明還有子節點
                  node = queue.popleft()      # 當前根節點指向出隊列的節點
                  print(node.item, end=',')
                  # 按照從左往右的順序加入隊列
                  if node.leftChild:
                      queue.append(node.leftChild)
                  if node.rightChild:
                      queue.append(node.rightChild)
      
      forInBiTree = ForInBiTree()
      # 前序遍歷結果:E,A,C,B,D,G,F
      forInBiTree.pre_order(root)
      # 中序遍歷結果:A,B,C,D,E,G,F
      forInBiTree.cen_order(root)
      # 后序遍歷結果:B,D,C,A,F,G,E
      forInBiTree.later_order(root)
      # 層次遍歷結果:E,A,G,C,F,B,D
      forInBiTree.level_order(root)
      posted @ 2023-01-10 19:38  無敵小豆包  閱讀(159)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产女同一区二区在线| 亚洲精品在线二区三区| 高潮迭起av乳颜射后入| 国产精品伦人视频免费看| 中文字幕久久波多野结衣av| 一本一本久久a久久精品综合| 午夜男女爽爽影院在线| 91精品蜜臀国产综合久久| 亚洲欧洲日产国无高清码图片| 国产一区二区三区怡红院| 久久精品午夜视频| 国产一区二区黄色在线观看| 亚洲区1区3区4区中文字幕码| 无码日韩做暖暖大全免费不卡| 浴室人妻的情欲hd三级国产| 日本亚洲一区二区精品| 精品国产精品午夜福利| 人妻无码中文字幕| 99在线小视频| 精品日韩精品国产另类专区| 91精品乱码一区二区三区| 亚洲成在人线AⅤ中文字幕| 久久精品国产99久久美女| 日本做受高潮好舒服视频| 女人张开腿让男人桶爽| 72种姿势欧美久久久久大黄蕉| 亚洲三区在线观看内射后入| 国产不卡一区二区四区| 成人综合婷婷国产精品久久蜜臀| 精品国产肉丝袜在线拍国语| 国产不卡在线一区二区| 精品国产乱一区二区三区| 风韵丰满熟妇啪啪区老老熟妇| 欧洲性开放老太大| 日本东京热一区二区三区| 777天堂麻豆爱综合视频| 国产精品一区二区久久岳| 人妻中文字幕不卡精品| 国产精品人妻一码二码尿失禁| 久久婷婷大香萑太香蕉AV人| 成人区人妻精品一区二区|