Letcode 퀴즈: 검지 오피스 [면접문제 27 두 갈래 나무의 거울]

문서 목록

  • 사고방식 1: 귀속
  • 사고방식2: 비귀속
  • [면접 문제 27 포크 나무의 거울!]
    난이도:간단
    함수를 완성하고 두 갈래 나무를 입력하십시오. 이 함수는 거울을 출력합니다.
    Letcode 문제 대응 위치: 면접 문제 27: 두 갈래 나무의 거울

    사고방식 1: 귀속


    일반적인 사고방식은 바로 역귀해법이다.(1) 귀속 경계 결정: 루트 = null;(2) 각 루트에 대한 작업: 교환 루트.left 및 root.right;(3) 좌우 나무 뿌리 노드를 차례로 아래로 교환하면 된다.
    시간 복잡도: O(n), n은 두 갈래 나무 노드 수량 공간 복잡도: O(n), 최악의 경우 두 갈래 나무가 체인 테이블로 퇴화하려면 O(n) 크기의 호출 창고 공간이 필요합니다.
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def mirrorTree(self, root: TreeNode) -> TreeNode:
            if not root: return
            tmp = root.left
            root.left = root.right
            root.right = tmp
            self.mirrorTree(root.left)
            self.mirrorTree(root.right)
            return root
    

    사고방식2: 비귀속


    교체 방법 1: 창고에서 두 갈래 나무의 순서를 시뮬레이션하고 창고 꼭대기 노드의 좌우 서브 나무를 교환합니다.교체의 종료 조건은 창고가 비어 있습니다.
    시간 복잡도: O(n), n은 두 갈래 나무 노드 수량 공간 복잡도: O(n), 최악의 경우 두 갈래 나무, 총 n개 노드, 창고에 최대 n/2개 노드 동시 저장
    class Solution:
        def mirrorTree(self, root: TreeNode) -> TreeNode:
            if not root: return
            stack = [root]
            while stack:
                node = stack.pop()
                if node.left: stack.append(node.left)
                if node.right: stack.append(node.right)
                node.left, node.right = node.right, node.left
            return root
    

    교체 방법 2: 대기열을 사용하여 두 갈래 나무의 차원을 모의하고 교환대 첫 번째 노드의 좌우 서브 나무를 실현한다.교체의 끝 조건은 대기열이 비어 있습니다.
    class Solution:
        def mirrorTree(self, root: TreeNode) -> TreeNode:
            if not root: return
            queue = [root]
            while queue:
                node = queue.pop(0)
                if node.left: queue.append(node.left)
                if node.right: queue.append(node.right)
                node.left, node.right = node.right, node.left
            return root
    

    좋은 웹페이지 즐겨찾기