LeetCode 集锦(二十二) - 第 101 题 Symmetric Tree
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 集锦(二十二) - 第 101 题 Symmetric Tree
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric:1/ \2 2/ \ / \ 3 4 4 3But the following [1,2,2,null,3,null,3] is not:1/ \2 2\ \3 3Note: Bonus points if you could solve it both recursively and iteratively. 復制代碼翻譯:
給定一個二叉樹,檢查它是否是自身的鏡像(即圍繞其中心對稱)。 例如,這個二叉樹[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 復制代碼注意: 如果你能遞歸地和迭代地解出它,那就更好了。
解題思路
本題判斷兩個樹是否鏡像樹,鏡像樹的特點,在于它的左節點和右節點是一樣的,根據這個特點我們可以解決這個問題。
解題方法
按照思路代碼如下
public boolean isSymmetric(TreeNode root) {if (root == null) {return true;}return isSymmetric(root.left, root.right);}public boolean isSymmetric(TreeNode left, TreeNode right) {if (left == null && right == null) {return true;}boolean isSame = left == null;isSame = isSame ? false : right != null && left.val == right.val;return isSame && isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);}class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;} }復制代碼時間復雜度: 該方案用了遞歸遍歷樹,不要判斷時間復雜度,而且樹的遍歷復雜度都說不好,且記為 O(n)
空間復雜度: 該方案使用了沒有使用額外空間,所以空間復雜度是 O(n)=O(1);
總結
本題的大致解法如上所訴,按照特點我們可以很簡單的解決這個問題,其實也可以按層進行對比,判斷每一層是否鏡像,可以用隊列來解決。
歡迎關注我的博客-FightCrap
轉載于:https://juejin.im/post/5cfb558c6fb9a07ea7130271
總結
以上是生活随笔為你收集整理的LeetCode 集锦(二十二) - 第 101 题 Symmetric Tree的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CF981H K Paths
- 下一篇: 蒸妙集团:大健康产业时代的弄潮儿,中国熏