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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

leetcode 101. 对称二叉树 递归解法 c语言

發布時間:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 101. 对称二叉树 递归解法 c语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如題:

給定一個二叉樹,檢查它是否是鏡像對稱的。 例如,二叉樹 [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

這道題剛開始想到的是使用隊列+BFS,因為c語言里沒有現成的隊列數據結構,需要自己實現,嫌麻煩。換個方式,看了示例1,覺得中序遍歷得到恰是一個首尾對稱的序列,寫好代碼提交運行出錯,中序遍歷情況下示例2那種類型也是對稱的,但不符合題目要求。后來采用遞歸方式,鏡像對稱,根節點不必說,只要兩顆子樹對稱就好。遞歸遍歷子樹,雙方各提供一個對稱節點進行比較,例如左子樹提供左孩子,右子樹提供右孩子以及左子樹提供。方法非常巧妙精簡,下面是c語言的解法:

//遞歸遍歷 bool isMirror(struct TreeNode* left, struct TreeNode* right) {if (left == NULL && right == NULL)return 1;else if (!left || !right)return 0;else{//分別遍歷左右子樹的左孩子和右孩子if (left->val == right->val)return (isMirror(left->left, right->right) && isMirror(left->right, right->left));return 0;} }bool isSymmetric(struct TreeNode* root){return isMirror(root, root); }

?

=============================================================================================

Linux應用程序、內核、驅動開發交流討論群(745510310),感興趣的同學可以加群討論、交流、資料查找等,前進的道路上,你不是一個人奧^_^。

總結

以上是生活随笔為你收集整理的leetcode 101. 对称二叉树 递归解法 c语言的全部內容,希望文章能夠幫你解決所遇到的問題。

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