天天看點

面試題59. 對稱二叉樹

面試題59. 對稱二叉樹

題目描述

請實作一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的。
面試題59. 對稱二叉樹

思路:

  • 如果兩個結點為空,傳回true
  • 如果一個為空,另一個不空,傳回false
  • 如果都不空,判斷val是否相等,
  • 如果不相等傳回false
  • 遞歸判斷
class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;
    }
}

public class Solution
    boolean isSymmetrical(TreeNode pRoot) {
        if(pRoot == null) {
            return true;
        }
        return core(pRoot.left, pRoot.right);
    }

    boolean core(TreeNode p1, TreeNode p2) {
        if(p1 == null && p2 == null) { // 如果都空,傳回true
            return true;
        }else if(p1 == null || p2 == null) { // 如果有一個空,傳回false
            return false;
        }else if(p1.val != p2.val){ // 如果結點的值不相等,傳回false
            return false;
        }

        // 遞歸 p1.left 和 p2.right
        // 遞歸 p1.right 和 p2.left
        return      

繼續閱讀