검지offer: 두 갈래 나무의 거울

  • 문제 설명
  •         ,            。
  •         :     
                8
               /  \
              6   10
             / \  / \
            5  7 9 11
                 
                8
               /  \
              10   6
             / \  / \
            11 9 7  5
  • 코드
  • struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        void Mirror(TreeNode *pRoot) {
            TreeNode *temp=NULL;
            if(pRoot){
                temp=pRoot->left;
                pRoot->left=pRoot->right;
                pRoot->right=temp;
                Mirror(pRoot->left);
                Mirror(pRoot->right);
            }
        }
    };
  • 오타와 충돌을 분석한 것은 이전에 자세히 보지 않았기 때문에 두 갈래 나무의 자수 값만 교환하면 된다고 생각했다
  •             8
               /  \
              10   6
             / \  / \
            7  5 11  9

    결과 제출이 끝난 후에야 아닌 것을 발견했지만 이미 통과되었기 때문에temp의 유형은TreeNode이기 때문에 교환하는 것은 하위 나무일 것이다.또한, temp는 반드시 NULL을 사용해야만 디버깅에 성공할 수 있다고 성명했습니다. 과거에 NULL과 NULL의 차이를 검색했을 때 의견이 분분하여 대단해 보였지만 알아볼 수가 없었기 때문에 나중에 시도해 보도록 하겠습니다.

    좋은 웹페이지 즐겨찾기