【LeetCode】226. Invert Binary Tree 해제
5660 단어 알고리즘과 데이터 구조tech
문제 개요
주어진 나무 두 그루를 좌우로 뒤집다.
예:
입력:
4
/ \
2 7
/ \ / \
1 3 6 9
출력: 4
/ \
7 2
/ \ / \
9 6 3 1
생각
차례로 실현되다.
먼저 노드가 0인 경우
root = []
반환하면 됩니다.그럼
null
때는 어떨까요?예를 들어 생각해 보자.1.'뿌리'자는 그대로 두면 된다.
4
/ \
2 7
/ \ / \
1 3 6 9
2. 뿌리째 바뀐 ⑦root != []
와 ②root.left
4
/ \
7 2
/ \ / \
6 9 1 3
상기 결과와 예상 출력을 비교하고 ⑥ 연결된 ⑥과 ⑥는 반전이 필요하다.⑥
root.right
라고 생각되면 2. 단계와 동일하게 뿌리가 연결된 ⑥root
및 ⑥root.left
를 교체할 수 있습니다.②에 대해서도 마찬가지로 조작한다.
4
/ \
7 2
/ \ / \
9 6 1 3
이로써 기대하는 출력을 얻는다.이상,
root.right
의 노드에서 null
반환null
및 root.left
4
/ \
7 2
/ \ / \
9 6 3 1
주의점
응답 프로그램의 "#주의!"의 일부가 손실되면 예상 출력을 가져올 수 없습니다.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if root is None:
return None
# 注意!
L = self.invertTree(root.right)
R = self.invertTree(root.left)
root.left = L
root.right = R
return root
이것은,class Solution(object):
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if root is None:
return None
root.left = self.invertTree(root.right)
root.right = self.invertTree(root.left)
return root
가 실행되었을 때 root.right
에서 반전root.left
의 노드에 덮어쓰고 다음 처리root.left = self.invertTree(root.right)
때문에 원래root.right
를 잃었다.
Reference
이 문제에 관하여(【LeetCode】226. Invert Binary Tree 해제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ike_pon/articles/ca3846635b20769aa070텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)