leecode 깊이 우선 검색 DFS
10680 단어 Leecode
104 두 갈래 나무의 최대 깊이 # Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root: return 0
q = [root]
stash = []
ans = 0
while q:
r = q.pop()
if r.left:
stash.append(r.left)
if r.right:
stash.append(r.right)
if len(q) == 0:
q = stash
ans += 1
stash = []
return ans
1123 가장 깊은 잎 노드의 최근 공공 조상
같다# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def lcaDeepestLeaves(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
def dfs(root):
if not root:
return None, 0
lr, ld = dfs(root.left)
rr, rd = dfs(root.right)
if ld > rd:
return lr, ld + 1
elif ld < rd:
return rr, rd + 1
else:
return root, ld + 1
ans, h = dfs(root)
return ans
865 모든 가장 깊은 노드를 가진 최소 하위 트리 # Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def subtreeWithAllDeepest(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
def f(root):
if not root:
return None, 0
l, r = f(root.left), f(root.right)
if l[1] > r[1]:
return l[0], l[1] + 1
elif l[1] < r[1]:
return r[0], r[1] + 1
else:
return root, r[1] + 1
return f(root)[0]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무 제목 집합
두 갈래 나무를 정해라.
그들 중 하나를 다른 나무로 덮으면 두 갈래 나무의 일부 노드가 겹칠 것이라고 상상해라.너는 그들을 새로운 두 갈래 나무로 합쳐야 한다.결합의 규칙은 두 노드가 중첩되면 그들의 값을 노드가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root: return 0
q = [root]
stash = []
ans = 0
while q:
r = q.pop()
if r.left:
stash.append(r.left)
if r.right:
stash.append(r.right)
if len(q) == 0:
q = stash
ans += 1
stash = []
return ans
같다
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def lcaDeepestLeaves(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
def dfs(root):
if not root:
return None, 0
lr, ld = dfs(root.left)
rr, rd = dfs(root.right)
if ld > rd:
return lr, ld + 1
elif ld < rd:
return rr, rd + 1
else:
return root, ld + 1
ans, h = dfs(root)
return ans
865 모든 가장 깊은 노드를 가진 최소 하위 트리 # Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def subtreeWithAllDeepest(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
def f(root):
if not root:
return None, 0
l, r = f(root.left), f(root.right)
if l[1] > r[1]:
return l[0], l[1] + 1
elif l[1] < r[1]:
return r[0], r[1] + 1
else:
return root, r[1] + 1
return f(root)[0]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무 제목 집합
두 갈래 나무를 정해라.
그들 중 하나를 다른 나무로 덮으면 두 갈래 나무의 일부 노드가 겹칠 것이라고 상상해라.너는 그들을 새로운 두 갈래 나무로 합쳐야 한다.결합의 규칙은 두 노드가 중첩되면 그들의 값을 노드가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def subtreeWithAllDeepest(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
def f(root):
if not root:
return None, 0
l, r = f(root.left), f(root.right)
if l[1] > r[1]:
return l[0], l[1] + 1
elif l[1] < r[1]:
return r[0], r[1] + 1
else:
return root, r[1] + 1
return f(root)[0]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무 제목 집합두 갈래 나무를 정해라. 그들 중 하나를 다른 나무로 덮으면 두 갈래 나무의 일부 노드가 겹칠 것이라고 상상해라.너는 그들을 새로운 두 갈래 나무로 합쳐야 한다.결합의 규칙은 두 노드가 중첩되면 그들의 값을 노드가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.