LeetCode:Symmetric Tree - 判斷二叉樹是否對稱

一、題目名稱java

Symmetric Tree(判斷二叉樹是否對稱)函數

二、題目地址code

https://leetcode.com/problems/symmetric-tree/遞歸

三、題目內容leetcode

英文:Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).開發

中文:給定一顆二叉樹,檢查它是否與本身的鏡像是同一棵樹(即圍繞根節點對稱)。get

四、解題方法it

本題與題目「Same Tree」的解法相似,使用遞歸函數考察整棵樹,包括左右對稱節點的值和對稱節點的兩個子枝。須要注意的是比較子枝的時候,比較的位置是對稱的位置,即用左樹的右枝去比較右樹的左枝,用左樹的左枝去比較右樹的右枝。io

一段能夠AC的Java代碼以下:class

/**
 * 功能說明:LeetCode 101 - Symmetric Tree 
 * 開發人員:Tsybius2014
 * 開發時間:2015年8月13日
 */
public class Solution {
    
    /**
     * 判斷二叉樹是否對稱
     * @param root 二叉樹根節點
     * @return true:對稱 false:不對稱
     */
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }
        return isMirror(root.left, root.right);
    }
    
    /**
     * 判斷一顆二叉樹的左右兩子節點是否對稱
     * @param leftNode 左子節點 
     * @param rightNode 右子節點
     * @return true:對稱 false:不對稱
     */
    public boolean isMirror(TreeNode leftNode, TreeNode rightNode) {
        if (leftNode == null && rightNode == null) {
            return true;
        } else if (
            (leftNode != null && rightNode == null) ||
            (leftNode == null && rightNode != null) ||
            leftNode.val != rightNode.val ||
            !isMirror(leftNode.left, rightNode.right) ||
            !isMirror(leftNode.right, rightNode.left)) {
            return false;
        } else {
            return true;
        }
    }
}

END

相關文章
相關標籤/搜索