반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 814 | Binary Tree Pruning | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/binary-tree-pruning/
문제
Given the root of a binary tree, return the same tree where every subtree (of the given tree) not containing a 1 has been removed.
A subtree of a node node is node plus every node that is a descendant of node.
조건
- The number of nodes in the tree is in the range [1, 200].
- Node.val is either 0 or 1.
내 풀이
Tree 구조 관련 문제는 recursive하게 짠다.
dfs로 탐색하며 트리의 끝(node)에 도달했을 때, node.left와 node.right을 봤을 때 그 값이 0인 child는 없애야 하기 때문에 None으로 바꾼다.
node.val, node.left.val, node.right.val 중 하나라도 1이 있다면 그 노드는 없앨 수 없기 때문에 1로 리턴함으로써 그 값(1)을 그 위의 노드한테 전달한다.
코드
# 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 pruneTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
def search(root):
if not root:
return 0
left = search(root.left)
right = search(root.right)
if not left:
root.left = None
if not right:
root.right = None
return max(root.val, left, right)
if search(root):
return root
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 94 | Binary Tree Inorder Traversal | Python (0) | 2022.09.08 |
---|---|
[LeetCode] 606 | Construct String form Binary Tree | Python (0) | 2022.09.07 |
[LeetCode] 429 | N-ary Tree Level Order Traversal | Python (0) | 2022.09.05 |
[LeetCode] 637 | Average of Levels in Binary Tree | Python (0) | 2022.09.02 |
[LeetCode] 1448 | Count Good Nodes in Binary Tree | Python (0) | 2022.09.01 |
Comments