• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

LeetCode101_101. 对称二叉树

武飞扬头像
落叶飘雪2014
帮助1

LeetCode101_101. 对称二叉树

一、描述

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

学新通

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:
学新通

输入:root = [1,2,2,null,3,null,3]
输出:false

提示:

树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100

二、题解

方法:

这道题目给了我们一个二叉树,让我们判断这个二叉树是不是对称的。因为这里要比较两个点,所以需要另外一个function isSymmetric 来递归(recursively call)。所以我们来分析一下isSymmetric 这个function:代入的有2个点,那么有4中可能性:
1- 如果两个点都是null,那么它们是相等的。返回true (这也是一种base case 表示结束了,走到树的最低端了,需要返回)
2- 如果一个点是null,另外一个不是null,那么它们不相等,返回false ( base case, 表示一边已经走到底了,需要返回)
3- 如果两个点都不是null,但是它们的值不相等, 返回false (判断条件,不相等,就返回)
4- 如果两个点相等,那么我们需要继续往下走,来判断接下去的点:
  根据对称的特性,这里需要pass 两个情况返回function:(function 代入的是两个点,左边和右边)
    1- 把 左边点的左边,和右边点的右边 返回function;
    2- 把 左边点的右边,和右边点的左边 返回funciton。
    利用 && 来控制, 如果任务一个返回的值是fales,那么最终结果是false。(必须所有的两个对称点都相等)

package com.aa.leetcode;

/**
 * @Description: 101. Symmetric Tree
 * @Author: AA
 * 题意: 101. 对称二叉树
 */
/*
这道题目给了我们一个二叉树,让我们判断这个二叉树是不是对称的。因为这里要比较两个点,所以需要另外一个function isSymmetric 来递归(recursively call)。所以我们来分析一下isSymmetric 这个function:代入的有2个点,那么有4中可能性:
1- 如果两个点都是null,那么它们是相等的。返回true (这也是一种base case 表示结束了,走到树的最低端了,需要返回)
2- 如果一个点是null,另外一个不是null,那么它们不相等,返回false ( base case, 表示一边已经走到底了,需要返回)
3- 如果两个点都不是null,但是它们的值不相等, 返回false (判断条件,不相等,就返回)
4- 如果两个点相等,那么我们需要继续往下走,来判断接下去的点:
  根据对称的特性,这里需要pass 两个情况返回function:(function 代入的是两个点,左边和右边)
    1- 把 左边点的左边,和右边点的右边 返回function;
    2- 把 左边点的右边,和右边点的左边 返回funciton。
    利用 && 来控制, 如果任务一个返回的值是fales,那么最终结果是false。(必须所有的两个对称点都相等)
*/
public class LeetCode101 {
}

//AC Your runtime beats 100.00 % of java submissions.
//193 / 193 test cases passed.	Status: Accepted	Runtime: 8 ms
class Solution101 {
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }
        return help(root.left, root.right);
    }

    public boolean help(TreeNode left, TreeNode right) {
        if (left == null && right == null) {
            return true;
        }
        if (left == null || right == null) {
            return false;
        }
        if (left.val != right.val) {
            return false;
        }
        return help(left.left, right.right) && help(left.right, right.left);
    }
}
学新通

LeetCode 100. 相同的树
LeetCode 101. 对称二叉树
LeetCode 102. 二叉树的层序遍历
LeetCode 103. 二叉树的锯齿形层序遍历
LeetCode 104. 二叉树的最大深度
LeetCode 105. 从前序与中序遍历序列构造二叉树
LeetCode 107. 二叉树的层序遍历 II
LeetCode 108. 将有序数组转换为二叉搜索树
LeetCode 121. 买卖股票的最佳时机
LeetCode 122. 买卖股票的最佳时机 II
LeetCode 136. 只出现一次的数字




By luoyepiaoxue2014

B站: https://space.bilibili.com/1523287361 点击打开链接
微博: http://weibo.com/luoyepiaoxue2014 点击打开链接

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggihgi
系列文章
更多 icon
同类精品
更多 icon
继续加载