一、題目大意
給你一個二叉樹的根節點 root , 檢查它是否軸對稱,
示例 1:

輸入:root = [1,2,2,3,4,4,3]
輸出:true
示例 2:

輸入:root = [1,2,2,null,3,null,3]
輸出:false
提示:
-
樹中節點數目在范圍 [1, 1000] 內
-
-100 <= Node.val <= 100
進階:你可以運用遞回和迭代兩種方法解決這個問題嗎?
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/symmetric-tree
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
二、解題思路
判斷一個樹是否對稱等價于判斷左右子樹是否對稱,分四步:(1)如果兩個子樹都為空指標,則它們相等或對稱(2) 如果兩個子樹只有一個為空指標,則它們不相等或不對稱(3)如果兩個子樹根節點的值不相等, 則它們不相等或不對稱(4)根據相等或對稱要求,進行遞回處理,
三、解題方法
3.1 Java實作
public class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
return isMirror(root.left, root.right);
}
public boolean isMirror(TreeNode left, TreeNode right) {
// (1)如果兩個子樹都為空指標,則它們相等或對稱
if (left == null && right == null) {
return true;
}
// (2) 如果兩個子樹只有一個為空指標,則它們不相等或不對稱
if (left == null && right != null) {
return false;
}
if (left != null && right == null) {
return false;
}
// (3)如果兩個子樹根節點的值不相等, 則它們不相等或不對稱
if (left != null && right != null && left.val != right.val) {
return false;
}
// (4)根據相等或對稱要求,進行遞回處理,
return isMirror(left.left, right.right) && isMirror(left.right, right.left);
}
}
四、總結小記
- 2022/9/7 做管理給待遇一定要由遠及近
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505496.html
標籤:其他
上一篇:無線喚醒在灌溉系統上的應用
