[검지 Offer] 27 두 갈래 나무의 거울

1153 단어 알고리즘 문제

제목:


함수를 완성하고 두 갈래 트리를 입력하십시오. 이 함수는 거울을 출력합니다.
예를 들어 입력:
4/\2 7/\/\1 3 6 9 미러 출력:
     4    /  \  7     2  /\  /\9   6 3   1
 
예 1:
입력: root = [4, 2, 7, 1, 3, 6, 9] 출력: [4, 7, 2, 9, 6, 3, 1]

문제를 본 후의 사고방식:


아이 노드가 있는 좌우 나무를 교환하다
어떻게 되는지 몰라
 

문제 해결 방법:


1. 보조 창고
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        if(root==null)return null;
        Stack stack=new Stack();
        stack.add(root);
        while(!stack.isEmpty()){
            TreeNode node=stack.pop();
            if(node.left!=null)stack.add(node.left);
            if(node.right!=null)stack.add(node.right);
            TreeNode temp=node.left;
            node.left=node.right;
            node.right=temp;
        }
        return root;
    }
}

노드를 창고에 넣고 왜 교환해야 합니까?
노드를 넣은 후에 튀어나오는 것은 교환된 것이다. 이런 식으로 노드가 다음에 창고에 들어가는 것은 좌우 노드를 교환한 후의 순서와 같다.

좋은 웹페이지 즐겨찾기