1. 程式人生 > 其它 >力扣101.對稱二叉樹

力扣101.對稱二叉樹

本題要立足於一個節點,思考當前節點需要做的事情。當前節點需要做的事情無非就是:判斷其左右子樹是否對稱。具體的判斷方法如下:

1.若左子樹為空,右子樹不空,則不對稱。

2.若左子樹不空,右子樹為空,則不對稱。

3.若左右子樹的值不相等,則不對稱。

4.若左右子樹都為空,則對稱。

5.接下來遞迴判斷左子樹的左是否等於右子樹的右,左子樹的右是否等於右子樹的左。(從題目給的樣圖可觀察出這個條件)

/**
 * 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) {
        if(root==null) return true;
        return traverse(root.left,root.right);
    }
    public boolean traverse(TreeNode left,TreeNode right){
        if(left!=null&&right==null) return false;
        else if(left==null&&right!=null) return false;
        else if(left==null&&right==null) return true;
        else if(left.val!=right.val) return false;
        return traverse(left.left,right.right)&&traverse(left.right,right.left);
    }