https://leetcode.com/problems/symmetric-tree/
이진 트리의 root가 주어질 때 왼쪽 자식과 오른쪽 자식이 symmetric 한지 반환하기 (즉, mirroring 된 것 처럼 반 접었을 때 같은 지)
예제를 보면 결국 왼쪽 자식의 왼쪽 노드와 오른쪽 자식의 오른쪽 노드, 왼쪽 자식의 오른쪽 노드와 오른쪽 자식의 왼쪽 노드가 같으면 되는 것을 확인할 수 있다.
same tree와 유사하게 재귀로 노드 타고 가면서 해당 조건의 여부에 따라 결과를 반환한다.
/**
* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
public class Solution {
public bool IsSymmetric(TreeNode root) {
return IsMirrored(root, root);
}
public bool IsMirrored(TreeNode t1, TreeNode t2)
{
if (t1 == null && t2 == null) return true;
if (t1 == null || t2 == null) return false;
if (t1.val != t2.val) return false;
return IsMirrored(t1.left, t2.right) && IsMirrored(t1.right, t2.left);
}
}