[검지 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;
}
} 노드를 창고에 넣고 왜 교환해야 합니까?
노드를 넣은 후에 튀어나오는 것은 교환된 것이다. 이런 식으로 노드가 다음에 창고에 들어가는 것은 좌우 노드를 교환한 후의 순서와 같다.