leetcode 101. 对称二叉树 递归解法 c语言
生活随笔
收集整理的這篇文章主要介紹了
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语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 堆排序之 大顶堆和小顶堆 c语言
- 下一篇: 360借条注销了怎么恢复