1. 程式人生 > >【劍指offer】面試題 28. 對稱的二叉樹

【劍指offer】面試題 28. 對稱的二叉樹

fin 技術分享 root 實現一個函數 面試題 分享 inf right png

面試題 28. 對稱的二叉樹

題目描述

    題目:請實現一個函數,用來判斷一顆二叉樹是不是對稱的。註意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的。

解答過程

給定一個二叉樹,檢查它是否是鏡像對稱的。

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

    1
   /   2   2
 / \ / 3  4 4  3

技術分享圖片

但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的:

    1
   /   2   2
   \      3    3

代碼

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public boolean isSymmetric(TreeNode root) {
        if (root == null || (root.left == null && root.right == null)) {
            return true;
        }
        
        return isSymmetric(root.left, root.right);
    }
    
    public boolean isSymmetric(TreeNode left, TreeNode right) {
        if (left == null && right == null) {
            return true;
        }
        if (left == null || right == null) {
            return false;
        }
        return (left.val==right.val)&&isSymmetric(left.left, right.right)&&isSymmetric(left.right, right.left);
    }
}

【劍指offer】面試題 28. 對稱的二叉樹