101. 对称二叉树

题目描述

链接: https://leetcode-cn.com/problems/symmetric-tree/submissions/
给定一个二叉树,检查它是否是镜像对称的。


题目分析

本题有两种解题方式:

  • 递归方式
    如果一个树的左子树和右子树镜像对称, 那么这个树是对称的
    如果同时满足以下条件, 两个树互为镜像:
    1) 两个根节点具有相同的值
    2) 每个树的右子树都与另一个树的左子树镜像对称, 每个树的左子树都与另一个树的右子树镜像对称.
    二叉树
  • 迭代方式
    利用栈来进行迭代.

代码:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isMirror(TreeNode t, TreeNode s) {
        if (t != null && s != null) 
            return (t.val == s.val) && isMirror(t.left, s.right) && isMirror(t.right, s.left);
        else return t == null && s == null;
    }
    //递归方式
    public boolean isSymmetricRecursive(TreeNode root) {
        if (root == null) return true;
        // 检查左子树和右子树是否为镜面对称结构
        return isMirror(root.left, root.right);
    }
    // 迭代方式
    public boolean isSymmetricIterative(TreeNode root) {
        if (root == null) return true;
        Stack<TreeNode> stack = new Stack<>();
        stack.push(root.left);
        stack.push(root.right);
        while (!stack.isEmpty()) {
            TreeNode s = stack.pop();
            TreeNode t = stack.pop();
            if (s == null && t != null || s != null && t == null)
                return false;
            if (s == null && t == null) continue;
            if (s.val != t.val) return false;
            stack.push(s.left);
            stack.push(t.right);
            stack.push(s.right);
            stack.push(t.left);
        }
        return true;
    }
    public boolean isSymmetric(TreeNode root) {
        //boolean result = isSymmetricIterative(root);
        boolean result = isSymmetricRecursive(root);
        return result;
    }
}
全部评论

相关推荐

11-25 22:06
已编辑
华为 2012基座大模型(预研) 15A 硕士985
点赞 评论 收藏
分享
10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
10-29 15:51
嘉应学院 Java
后端转测开第一人:你把简历的学历改成北京交通大学 去海投1000份发现基本还是没面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务