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

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

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

      2025/9/15 【二叉樹12】平衡二叉樹

      110. 平衡二叉樹 - 力扣(LeetCode)

      二叉樹節點的深度:指從根節點到該節點的最長簡單路徑邊的條數。

      二叉樹節點的高度:指從該節點到葉子節點的最長簡單路徑邊的條數。

      但leetcode中強調的深度和高度很明顯是按照節點來計算的。

      求深度適合用前序遍歷,而求高度適合用后序遍歷。

      方法一:遞歸

      關于根節點的深度究竟是1 還是 0,不同的地方有不一樣的標準,leetcode的題目中都是以節點為一度,即根節點深度是1。但維基百科上定義用邊為一度,即根節點的深度是0。

      # 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 isBalanced(self, root: Optional[TreeNode]) -> bool:
              if self.get_height(root) != -1:
                  return True
              else:
                  return False
      
          def get_height(self, root):
              if not root:
                  return 0
              if (left_height := self.get_height(root.left)) == -1:
                  return -1
              if (right_height := self.get_height(root.right)) == -1:
                  return -1
              if abs(left_height - right_height) > 1:
                  return -1
              else:
                  return 1 + max(left_height, right_height)

       

      方法二:迭代

      在104.二叉樹的最大深度 中我們可以使用層序遍歷來求深度,但是就不能直接用層序遍歷來求高度了,這就體現出求高度和求深度的不同。

      # 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 isBalanced(self, root: Optional[TreeNode]) -> bool:
              if not root:
                  return True
              st = []
              st.append(root)
              while st:
                  node = st.pop()
                  if abs(self.getDepth(node.left) - self.getDepth(node.right)) > 1:
                      return False
                  if node.right:
                      st.append(node.right)
                  if node.left:
                      st.append(node.left)
              return True
      
          def getDepth(self, cur):
              if not cur:
                  return 0
              
              st = []
              st.append(cur)
              depth = 0
              result = 0
              while st:
                  node = st[-1]
                  if node is not None:
                      st.pop()
                      st.append(node)
                      st.append(None)
                      depth += 1
                      if node.right:
                          st.append(node.right)
                      if node.left:
                          st.append(node.left)
                  else:
                      st.pop()
                      st.pop()
                      depth -= 1
                  result = max(result, depth)
              return result

       

      posted on 2025-09-15 15:23  axuu  閱讀(9)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 中国CHINA体内裑精亚洲日本| 久久av无码精品人妻出轨| 国产在线高清视频无码| 国内精品久久人妻无码不卡| 国产一区二区三区国产视频 | 亚洲av影院一区二区三区| 亚洲精品成人综合色在线| 国产成人精品无码播放| 99久久激情国产精品| 亚洲熟少妇在线播放999| 国产精品老熟女一区二区| 免费无码黄十八禁网站| AV无码免费不卡在线观看 | 精品一区二区不卡免费| 给我播放片在线观看| 麻豆蜜桃伦理一区二区三区| 亚洲欧洲日产国码无码久久99| jizz国产免费观看| 日韩av中文字幕有码| 国产精品中文字幕自拍| 精品不卡一区二区三区| 欧美一区二区三区久久综合| 日韩有码中文字幕国产| 日韩有码中文字幕国产| 中文文字幕文字幕亚洲色| 孕交videos小孕妇xx| 亚洲精品无码av天堂| 中文字幕日韩有码国产| 亚洲av成人一区在线| 日韩熟妇中文色在线视频| 洱源县| 亚洲香蕉伊综合在人在线| 亚洲国产精品人人做人人爱| 国产精品国产精品国产精品| 好先生在线观看免费播放| 成人永久性免费在线视频| 免费无码成人AV片在线| 九九热在线免费视频播放| 神木县| 天天躁夜夜躁天干天干2020| 成人看的污污超级黄网站免费 |