Problem 101

Symmetric Tree

Posted by Ruizhi Ma on June 21, 2019

问题描述

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

(树状图画不出来,右转看原题:https://leetcode.com/problems/symmetric-tree/)

Note: Bonus points if you could solve it both recursively and iteratively.

解决思路

递归。感觉没啥要说的,代码写的思路挺清晰的。

代码

package leetcode;

import sun.reflect.generics.tree.Tree;

public class SymmetricTree {

    public class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode(int x) { val = x; }
  }

    public boolean isSymmetric(TreeNode root) {
        if (root == null){
            return true;
        }

        return checkNode(root.left, root.right);

    }

    public boolean checkNode(TreeNode node1, TreeNode node2){
        if (node1 == null && node2 == null){
            return true;
        }

        if (node1 == null || node2 == null){
            return false;
        }

        if (node1.val != node2.val){
            return false;
        }else{
            return checkNode(node1.left, node2.right) &&
                    checkNode(node1.right, node2.left);
        }
    }


}