LeetCode 0101 Symmetric Tree
阿新 • • 發佈:2022-05-08
1. 題目描述
2. Solution
1、思路分析
如果一棵樹的左子樹與右子樹映象對稱,那麼這棵樹是對稱的。
因此,該問題可以轉化為:兩個樹在什麼情況下互為映象?
如果同時滿足下面的條件,兩棵樹互為映象:
1> 它們的兩個根結點具有相同的值;
2> 每棵樹的右子樹都與另一棵樹的左子樹映象對稱。
2、程式碼實現
package Q0199.Q0101SymmetricTree; import DataStructure.TreeNode; public class Solution { public boolean isSymmetric(TreeNode root) { return root == null || isSymmetricAux(root.left, root.right); } private boolean isSymmetricAux(TreeNode left, TreeNode right) { if (left == null || right == null) return left == right; if (left.val != right.val) return false; return isSymmetricAux(left.left, right.right) && isSymmetricAux(left.right, right.left); } }
3、複雜度分析
時間複雜度: O(n)
空間複雜度: O(n)