leetcode107-python 두 갈래 트리 차원 두루 훑어보기
2521 단어 leetcode
For example:Given binary tree
[3,9,20,null,null,15,7]
, 3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
문제 해결 요점:
1. 두 갈래 트리를 층층이 훑어보지만 노드를 결과의list에 직접 넣지 않고 노드의 수치를list에 넣어야 원하는 것을 얻을 수 있다.
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if root == None:
return []
st = []
st.append(root)
k = []
k.append(root.val)
ans = []
ans.insert(0, k)
p = st[0]
while len(st) != 0:
temp = st[0]
if temp.left != None:
st.append(temp.left)
if temp.right != None:
st.append(temp.right)
if p == st[0]:
p = st[len(st)-1]
if p != st[0]:
k = []
for i in range(1, len(st)):
k.append(st[i].val)
ans.insert(0, k)
st.pop(0)
return ans
참고 사항:
1.dfs의 과정은 대기열에서 앞의 요소가 하나씩 튀어나오는 것이 아니라 다음 층의 목록과 직접 일치하는 것을 반복한다.
2.l1=l1+[l2]의 문법은 l2를 원소로 l1에 넣을 수 있으며, l1=[l2]+l1이라면 l2는 l1의 앞에 넣는다
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if root == None:
return []
queue = []
queue.append(root)
ans = []
while queue:
nodes = []
no_val = []
for i in queue:
if i.left != None:
nodes.append(i.left)
if i.right != None:
nodes.append(i.right)
no_val += [i.val]
queue = nodes
ans = [no_val] + ans
return ans
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.