101. Symmetric Tree


class Solution {
    
    public boolean isSymmetric(TreeNode root) {
    	return isMirror(root, root);
    }

    public boolean isMirror(TreeNode t1, TreeNode t2) {
    	if (t1 == null && t2 == null) return true;
    	if (t1 == null || t2 == null) return false;
    	return (t1.val == t2.val)
        && isMirror(t1.right, t2.left)
        && isMirror(t1.left, t2.right);
    }
}

recursion 죽이고 싶은 나,, 정상인가요

Runtime: 0 ms, faster than 100.00% of Java online submissions for Symmetric Tree.
Memory Usage: 37.2 MB, less than 35.59% of Java online submissions for Symmetric Tree.

public boolean isSymmetric(TreeNode root) {
    Queue<TreeNode> q = new LinkedList<>();
    q.add(root);
    q.add(root);
    while (!q.isEmpty()) {
        TreeNode t1 = q.poll();
        TreeNode t2 = q.poll();
        if (t1 == null && t2 == null) continue;
        if (t1 == null || t2 == null) return false;
        if (t1.val != t2.val) return false;
        q.add(t1.left);
        q.add(t2.right);
        q.add(t1.right);
        q.add(t2.left);
    }
    return true;
}

Queue를 쓰는 방식

좋은 웹페이지 즐겨찾기