주어진 값을 가진 리프 삭제
root
와 정수target
가 주어지면 값이 target
인 모든 리프 노드를 삭제합니다.값이
target
인 리프 노드를 삭제한 후 부모 노드가 리프 노드가 되고 값이 target
인 경우 삭제해야 합니다(할 수 없을 때까지 계속 수행해야 함).예 1:
입력: 루트 = [1,2,3,2,null,2,4], 대상 = 2
출력: [1,null,3,null,4]
설명: 값(대상 = 2)이 있는 녹색의 리프 노드가 제거됩니다(왼쪽 그림).
제거 후 새 노드는 값이 (대상 = 2)인 리프 노드가 됩니다(가운데 그림).
예 2:
입력: 루트 = [1,3,3,3,2], 대상 = 3
출력: [1,3,널,널,2]
예 3:
입력: 루트 = [1,2,null,2,null,2], 대상 = 2
출력: [1]
설명: 값(대상 = 2)이 있는 녹색의 리프 노드는 각 단계에서 제거됩니다.
제약:
[1, 3000]
범위에 있습니다. 1 <= Node.val, target <= 1000
해결책:
# 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 removeLeafNodes(self, root: Optional[TreeNode], target: int) -> Optional[TreeNode]:
if root:
if not root.left and not root.right and root.val == target:
return None
root.left = self.removeLeafNodes(root.left, target)
root.right = self.removeLeafNodes(root.right, target)
if not root.left and not root.right and root.val == target:
return None
return root
Reference
이 문제에 관하여(주어진 값을 가진 리프 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/delete-leaves-with-a-given-value-3154텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)