题目描述
给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false
思路
二叉树系列的题目一般比较抽象,即使知道算法,代码实现起来也不容易,而递归却能带来不可思议的效果。
对于二叉树是否对称,我们要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了其实我们要比较的是两个树(这两个树是根节点的左右子树),所以在递归遍历的过程中,也是要同时遍历两棵树。
那么如何比较呢?
我们递归函数里传入左右子树的根节点,如果左子树左孩子的值等于右子树右孩子的值相等,并且左子树右孩子的值等于右子树左孩子的值相等,并递归地比较到最底层,如果全都满足条件,那么该二叉树就是对称二叉树。如图
解法
C++版本
Java版本