剑指Offer—58—对称的二叉树

来源:互联网 发布:python 爬虫 动态页面 编辑:程序博客网 时间:2024/06/05 09:55

对称的二叉树——请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

package A58对称的二叉树;class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}public class Solution {    boolean isSymmetrical(TreeNode pRoot) {        if (pRoot == null){            return true;        }        return isTrue(pRoot.left,pRoot.right);    }    boolean isTrue(TreeNode t1,TreeNode t2){        if (t1 == null && t2 == null){            return true;        }        if (t1 != null && t2 != null){            return t1.val == t2.val && isTrue(t1.left,t2.right) && isTrue(t1.right,t2.left);        }        return false;    }}
package A58对称的二叉树;import java.util.LinkedList;import java.util.Queue;public class Solution1 {    boolean isSymmetrical(TreeNode pRoot) {        if (pRoot == null){            return true;        }        Queue<TreeNode> q1 = new LinkedList<>();        Queue<TreeNode> q2 = new LinkedList<>();        q1.add(pRoot.left);        q2.add(pRoot.right);        TreeNode left;        TreeNode right;        while (!q1.isEmpty() && !q2.isEmpty()){            left = q1.poll();            right = q2.poll();            if (null == left && null == right){                continue;            }            if (null == left || null == right){                return false;            }            if (left.val != right.val){                return false;            }            q1.add(left.left);            q1.add(left.right);            q2.add(right.right);            q2.add(right.left);        }        return true;    }}
原创粉丝点击