力扣101.对称二叉树

本题要立足于一个节点,思考当前节点需要做的事情。当前节点需要做的事情无非就是:判断其左右子树是否对称。具体的判断方法如下:

1.若左子树为空,右子树不空,则不对称。

2.若左子树不空,右子树为空,则不对称。

3.若左右子树的值不相等,则不对称。

4.若左右子树都为空,则对称。

5.接下来递归判断左子树的左是否等于右子树的右,左子树的右是否等于右子树的左。(从题目给的样图可观察出这个条件)。

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode() {}
 8  *     TreeNode(int val) { this.val = val; }
 9  *     TreeNode(int val, TreeNode left, TreeNode right) {
10  *         this.val = val;
11  *         this.left = left;
12  *         this.right = right;
13  *     }
14  * }
15  */
16 class Solution {
17     public boolean isSymmetric(TreeNode root) {
18         if(root==null) return true;
19         return traverse(root.left,root.right);
20     }
21     public boolean traverse(TreeNode left,TreeNode right){
22         if(left!=null&&right==null) return false;
23         else if(left==null&&right!=null) return false;
24         else if(left==null&&right==null) return true;
25         else if(left.val!=right.val) return false;
26         return traverse(left.left,right.right)&&traverse(left.right,right.left);
27     }
28 }

 

posted @ 2021-11-28 15:40  开心码码乐  阅读(25)  评论(0)    收藏  举报