刷题专栏(五):对称二叉树

简介: 刷题专栏(五):对称二叉树

前言

今天的这道题《对称二叉树》,难度处于简单层次,主要考察的是对二叉树数据结构的理解以及如何使用递归的概念。image.png

算法题:对称二叉树

对称二叉树这道题目的描述很少,将要实现的目的很直接的传达给了大家。

那就是验证一个二叉树是否存在轴对称的情况,也就是判断是否左右对称。

我们可以通过题目给出的示例1就能看出来,

逻辑思路有了,那么如何通过代码来实现呢,大概一想,必然要使用递归概念。

一直递归到二叉树的最底层。

而且从一开始,二叉树的左右两边就已经分开了,所以只需要在递归代码体中判断即可。

不过有一个特殊情况,那就是对称的概念,不是两边的左节点对应左节点,而是左节点对应右节点才能称之为对称。

代码展示

这就是我的执行代码了,通过递归is方法来实现多个节点的判断,直到递归到最后一层为止。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSymmetric(TreeNode root) {
        TreeNode left = root.left;
        TreeNode right = root.right;
        return is(left, right);
    }
    private boolean is(TreeNode left, TreeNode right){
        if(left == null && right == null){
            return true;
        }else if(left == null || right == null){
            return false;
        }
        if(left.val != right.val){
            return false;
        }else{
            return is(left.left, right.right) && is(left.right, right.left);
        }
    }
}

执行结果:

这道题的执行结果还是比较满意的,递归好使。

image.png

总结

本道题主要涉及数据结构二叉树和递归的概念,在比对的期间也很简单,大家还是可以去做一下这道题的。

目录
相关文章
|
5月前
|
算法
刷题专栏(六):二叉树的最大深度
刷题专栏(六):二叉树的最大深度
38 0
|
5月前
|
存储 算法
刷题专栏(十一):二叉树的后序遍历
刷题专栏(十一):二叉树的后序遍历
37 0
|
5月前
|
算法
刷题专栏(十):二叉树的前序遍历
刷题专栏(十):二叉树的前序遍历
32 0
|
5月前
|
算法
刷题专栏(八):平衡二叉树
刷题专栏(八):平衡二叉树
33 0
|
5月前
|
算法
六六力扣刷题二叉树之对称二叉树
六六力扣刷题二叉树之对称二叉树
54 1
|
5月前
|
存储 算法 C++
六六力扣刷题二叉树之基础
六六力扣刷题二叉树之基础
47 0
|
6月前
|
算法
代码随想录算法训练营第十四天 | LeetCode 102. 二叉树的层序遍历、LeetCode 226. 翻转二叉树、LeetCode 101. 对称二叉树
代码随想录算法训练营第十四天 | LeetCode 102. 二叉树的层序遍历、LeetCode 226. 翻转二叉树、LeetCode 101. 对称二叉树
35 0
|
11月前
|
算法
牛客网《剑指offer》专栏刷题练习之双指针算法的使用
牛客网《剑指offer》专栏刷题练习之双指针算法的使用
74 0
|
11月前
|
存储 C++ 容器
剑指Offer - 面试题28:对称的二叉树
剑指Offer - 面试题28:对称的二叉树
49 0