日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】

發布時間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看題解時,很多大牛用很少的代碼就完成了AC,但可能看了很多遍也看不懂,因此萌生了寫一種最“笨”最完整的代碼的想法,這樣大家可以通過我的代碼入門,看懂了再去挑戰大牛們的簡潔解法。


請實現一個函數,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的鏡像一樣,那么它是對稱的。

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

示例 2:
輸入:root = [1,2,2,null,3,null,3]
輸出:false

限制:
0 <= 節點個數 <= 1000


題意:判斷某樹是否是對稱的

最初思路:求出其“左根右”順序的序列,求出其“右根左”順序的序列,查看二者序列是否相等即可。

特例:若某個樹的所有節點值都是相同的,則上述思路不成立。 因為即使樹不對稱,節點序列也始終相同。

改進1:將null值加入到序列中,這樣就不會因為節點相同而誤判。
改進2:直接在遞歸過程中完成判斷,避免開辟多余的存儲空間存儲數組


class Solution {public boolean isSymmetric(TreeNode root) {if(root == null) return true;// 同步對比左子樹和右子樹,因此新建一個方法進行遞歸return isSymmetric(root.left, root.right);}public boolean isSymmetric(TreeNode r1, TreeNode r2) {// 1、判斷結構是否相同(空指針)if(r1 == null && r2 == null) return true;if(r1 == null || r2 == null) return false;// 2、判斷值是否相同if(r1.val != r2.val) return false;// 3、若既同構,而且值也相等,則應遞歸boolean flag = false;flag = isSymmetric(r1.left, r2.left) && isSymmetric(r1.right, r2.right);return flag;} }

木秀于林,風必摧之;堆出于岸,流必湍之;行高于人,眾必非之。

總結

以上是生活随笔為你收集整理的剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。