101. Symmetric Tree

来源:互联网 发布:wmware 怎么安装mac os 编辑:程序博客网 时间:2024/06/09 14:11

题目:https://leetcode.com/problems/symmetric-tree/

代码:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isSymmetric(TreeNode root) {        if(root==null)            return true;        return isSymmetric(root.left,root.right);    }    public boolean isSymmetric(TreeNode t1,TreeNode t2)    {        if(t1==null&&t2==null)            return true;        if(t1==null||t2==null)            return false;        boolean leftSymmetric = isSymmetric(t1.left,t2.right);        boolean rightSymmetric = isSymmetric(t1.right,t2.left);        return (t1.val==t2.val)&&leftSymmetric&&rightSymmetric;    }}1msrecursively ==================================================================/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isSymmetric(TreeNode root) {        if(root==null)            return true;        Queue<TreeNode> left = new LinkedList<>();        Queue<TreeNode> right = new LinkedList<>();        left.add(root.left);        right.add(root.right);        while(!left.isEmpty()&&!right.isEmpty())        {            TreeNode l = left.poll();            TreeNode r = right.poll();            if(l==null&&r==null)                continue;            if(l==null||r==null)                return false;            if(l.val!=r.val)                return false;            left.add(l.left);            right.add(r.right);            left.add(r.left);            right.add(l.right);        }        if(left.isEmpty()&&right.isEmpty())            return true;        else            return false;    }}2msiteratively
0 0
原创粉丝点击