[leetcode 104] Maximum Depth of Binary Tree
6185 ワード
質問リンク
マイロジック
ツリーの最大深さの問題を探します.ということで、どうしても木の根から木の葉ノードまで巡回し、木の巡回なら前列巡回、中列巡回、後列巡回があると思います.この考えは毎回再帰的であり,再帰的に考えを実現すると,再帰関数を置く位置だけが変わる.この問題では,どの順番で巡回しても構わず,いかなる巡視方式を用いてもよい.
巡回後、左または右の幹線から戻ってきたノードの深さを
ループで最大ノードの深さを維持し、最終的に戻ります.
本の中でBFSで説明します.
ルートノードで接続されたサブノードを順次ナビゲートし、親ノードにアクセスするたびに深さが増加します.
マイロジック
ツリーの最大深さの問題を探します.ということで、どうしても木の根から木の葉ノードまで巡回し、木の巡回なら前列巡回、中列巡回、後列巡回があると思います.この考えは毎回再帰的であり,再帰的に考えを実現すると,再帰関数を置く位置だけが変わる.この問題では,どの順番で巡回しても構わず,いかなる巡視方式を用いてもよい.
巡回後、左または右の幹線から戻ってきたノードの深さを
max
関数と比較し、次の手順に従います.ループで最大ノードの深さを維持し、最終的に戻ります.
class Solution:
def maxDepth(self, root: TreeNode) -> int:
def traverse(node, num):
if not node.left and not node.right:
return num
ret = num
if node.right:
ret = max(ret, traverse(node.right,num+1))
if node.left:
ret = max(ret,traverse(node.left, num+1))
return ret
return traverse(root, 1) if root != None else 0
本のロジック本の中でBFSで説明します.
ルートノードで接続されたサブノードを順次ナビゲートし、親ノードにアクセスするたびに深さが増加します.
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
queue = collections.deque([root])
depth = 0
while queue:
depth += 1
for _ in range(len(queue)):
cur = queue.popleft()
if cur.right:
queue.append(cur.right)
if cur.left:
queue.append(cur.left)
return depth
Reference
この問題について([leetcode 104] Maximum Depth of Binary Tree), 我々は、より多くの情報をここで見つけました https://velog.io/@wlgns2223/leetcode-104-Maximum-Depth-of-Binary-Treeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol