对称二叉树

72 阅读1分钟

给定一个二叉树,检查它是否是镜像对称的。

感觉很简单,但写起来是个问题😭😭😭

分析:还是递归实现,其实就是比较左孩子和右孩子,然后左孩子的左孩子和右孩子的来镜像对比👌

所以里面的截止条件的判断都是拿左右来对比的,不讲了。看一半遍代码你应该就会了😎

 class Solution {
     public boolean isSymmetric(TreeNode root) {
         if(root==null) {
             return true;
         }
         //调用递归函数,比较左节点,右节点
         return dfs(root.left,root.right);       
     }
     boolean dfs(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 dfs(left.left,right.right) && dfs(left.right,right.left);
     }
 }