对称二叉树

作者: windUtterance | 来源:发表于2020-05-19 17:02 被阅读0次

    题目描述
    给定一个二叉树,检查它是否是镜像对称的。

    示例
    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
    1
    / \
    2 2
    / \ / \
    3 4 4 3

    Java代码

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    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.left, t2.right) && isMirror(t1.right, t2.left); 
        }
    
        //迭代
        public boolean isSymmetric(TreeNode root) {
            Queue<TreeNode> queue = new LinkedList<>();
            queue.add(root);
            queue.add(root);
    
            while(!queue.isEmpty()) {
                TreeNode t1 = queue.poll();
                TreeNode t2 = queue.poll();
                if(t1 == null && t2 == null) continue;
                if(t1 == null || t2 == null) return false;
                if(t1.val != t2.val) return false;
                queue.add(t1.left);
                queue.add(t2.right);
                queue.add(t1.right);
                queue.add(t2.left);
            }
    
            return true;
        }
    }
    

    相关文章

      网友评论

        本文标题:对称二叉树

        本文链接:https://www.haomeiwen.com/subject/prbbohtx.html