前言
今天的这道题《对称二叉树》,难度处于简单层次,主要考察的是对二叉树数据结构的理解以及如何使用递归的概念。
算法题:对称二叉树
对称二叉树这道题目的描述很少,将要实现的目的很直接的传达给了大家。
那就是验证一个二叉树是否存在轴对称的情况,也就是判断是否左右对称。
我们可以通过题目给出的示例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); } } }
执行结果:
这道题的执行结果还是比较满意的,递归好使。
总结
本道题主要涉及数据结构二叉树和递归的概念,在比对的期间也很简单,大家还是可以去做一下这道题的。