Invert Binary Tree(두 갈래 트리 반전)

1730 단어 Leet Code 문제집
Invert a binary tree.(두 갈래 나무 반전)
     4
   /   \
  2     7
 / \   / \
1   3 6   9

to
     4
   /   \
  7     2
 / \   / \
9   6 3   1

1. 개인적으로 이 문제를 분석한 것은 사실'검지Offer'에서 보았지만 책에서 말한 것은 거울 두 갈래 나무일 뿐이지만 그들의 본질은 같다. 뿌리 노드의 좌우 아이 노드를 두 냥으로 교환한 다음에 같은 방법으로 좌우 나무 처리를 하면 된다.
2. 개인 해법
 TreeNode* invertTree(TreeNode* root) {
        if(root == NULL)
            return NULL;

        if(root->left || root->right)
            swap(root->left, root->right);

        invertTree(root->left);
        invertTree(root->right);

        return root;
    }

3. 반전 트리를 해결하는 관건은 좌우 노드를 교환하면 실현될 수 있다는 것을 알 수 있는지에 있다. 여기서 상술한 예시를 관찰 분석하여 이 결론을 얻을 수 있다.만약 제시된 제목이 실례를 제시하지 않는다면 우리 스스로 예를 들어 그림을 그려야 한다. 이것은 낯설고 복잡한 문제의 해결에 매우 중요하다.
PS:
  • 문제의 중국어 번역은 본인이 한 것입니다. 만약 편차가 있으면 지적해 주십시오
  • 그 중에서의'개인 분석'과'개인 해법'은 모두 본인의 최초의 생각과 방법이다. 반드시 옳은 것은 아니다. 단지 하나의 대조와 기록으로서..
  • 좋은 웹페이지 즐겨찾기