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

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

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

      2025/8/20 二叉樹的統一迭代法

      方法一:空指針標記法

      1. 迭代法前序遍歷

      ① 空指針標記法

      class TreeNode:
          def __init__(self, val=0, left=None, right=None):
              self.val = val
              self.left = left
              self.right = right
      
      class Solution:
          def preorderTraversal(self, root: TreeNode) -> List[int]:
              if not root:
                  return []
      
              result = []
              st = [root]
              while st:
                  node = st.pop()
                  if node != None:
                      if node.right:
                          st.append(node.right)
                      if node.left:
                          st.append(node.left)
                      st.append(node)
                      st.append(None)
                  else:
                      node = st.pop()
                      result.append(node.val)
              return result

      ② 前序遍歷寫法(推薦寫法)
      更簡單清晰,非空指針標記法

      class Solution:
          def preorderTraversal(self, root: TreeNode) -> List[int]:
              if not root:
                  return []
      
              result = []
              st = [root]
              while st:
                  node = st.pop()
                  result.append(node.val)
      
                  if node.right:
                      st.append(node.right)
      
                  if node.left:
                      st.append(node.left)
              return st

      2.迭代法中序遍歷(空指針標記法)

      class TreeNode:
          def __init__(self, val=0, left=None, right=None):
              self.val=val
              self.left=left
              self.right=right
      
      class Solution:
          def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
              if not root:
                  return []
      
              st = [root]
              result = []
              while st:
                  node = st.pop()
                  if node is not None:
                      if node.right:
                          st.append(node.right)
                          
                      st.append(node)
                      st.append(None)
                      
                      if node.left:
                          st.append(node.left)
                  else:
                      node = st.pop()
                      result.append(node.val)
              return result

      3.迭代法后序遍歷(空指針標記法)

      # Definition for a binary tree node.
      # class TreeNode:
      #     def __init__(self, val=0, left=None, right=None):
      #         self.val = val
      #         self.left = left
      #         self.right = right
      class Solution:
          def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
              if not root:
                  return []
              
              result = []
              st = [root]
              while st:
                  node = st.pop()
                  if node is not None:
                      st.append(node)
                      st.append(None)
                      if node.right:
                          st.append(node.right)
                      if node.left:
                          st.append(node.left)
                  else:
                      node = st.pop()
                      result.append(node.val)
              return result

      方法二:boolean標記法

      1. 中序遍歷,統一迭代(boolean 標記法):

      # class TreeNode:
      #     def __init__(self, val=0, left=None, right=None):
      #         self.val = val
      #         self.left = left
      #         self.right = right
      
      class Solution:
          def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
              values = []
              st = [(root, False)] if root else []
      
              while st:
                  node, visited = st.pop()
      
                  if visited:
                      values.append(node.val)
                      continue
                  
                  if node.right:
                      st.append((node.right, False))
                  
                  st.append((node, True))
      
                  if node.left:
                      st.append((node.left, False))
              return values

      知識點:

      ① Python 中 (a, b) 是什么數據結構?

      是 Python 中的 元組(tuple),它是一種 不可變的序列類型,類似于 C++ 里的 pair。

      特點:

      屬性 說明
      用圓括號 () 表示 (a, b, c) 是一個三元組
      元素可以不同類型 (1, "hello", True)
      不可變 創建后不能修改其中的值
      可解包 a, b = (1, 2) 直接賦值
      支持索引 (1, 2)[0] == 1

       

      ② continue 在這里的作用?

      立即跳出本輪 while 循環,進入下一輪循環。

      2. 后序遍歷,統一迭代(boolean 標記法):

      # Definition for a binary tree node.
      # class TreeNode:
      #     def __init__(self, val=0, left=None, right=None):
      #         self.val = val
      #         self.left = left
      #         self.right = right
      class Solution:
          def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
              values = []
              st = [(root, False)] if root else []
      
              while st:
                  node, visited = st.pop()
      
                  if visited:
                      values.append(node.val)
                      continue
                  
                  st.append((node, True))
                  
                  if node.right:
                      st.append((node.right, False))
                  
                  if node.left:
                      st.append((node.left, False))
              return values

       

      posted on 2025-08-20 18:01  axuu  閱讀(10)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 人妻少妇偷人无码视频| 在线观看成人年视频免费| 国产真人性做爰久久网站| 激情综合五月丁香亚洲| 亚洲自拍精品视频在线| 亚洲乱码一卡二卡卡3卡4卡| 男女爽爽无遮挡午夜视频| 亚洲精品有码在线观看| 亚洲一区二区精品极品| 亚洲精品电影院| 国产精品成| 在线观看中文字幕码国产| 97国产成人无码精品久久久| 国产精品99久久免费| 精品人妻av区乱码| 精河县| 乱人伦人妻中文字幕不卡| 国产普通话对白刺激| 国产三级精品片| 天天做天天爱夜夜爽导航| 成年男女免费视频网站| 亚洲国产性夜夜综合| 国产亚洲精品自在久久蜜TV| 四虎永久精品在线视频| 亚洲成av人片无码迅雷下载| 好爽好紧好大的免费视频| 亚洲精品熟女一区二区| 欧洲码亚洲码的区别入口| 4hu四虎永久在线观看| 国产欧美日韩精品丝袜高跟鞋| 欧美午夜成人片在线观看| 少妇无码av无码专区在线观看| 97夜夜澡人人爽人人模人人喊| 先锋影音男人av资源| 日本在线a一区视频高清视频| 人妻系列中文字幕精品| 国产精品免费视频不卡| 国产播放91色在线观看| 最近2019中文字幕免费看| 美欧日韩一区二区三区视频| 无码专区视频精品老司机|