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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 100. 相同的树(二叉树遍历)

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 100. 相同的树(二叉树遍历) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 題目

給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。

如果兩個樹在結構上相同,并且節點具有相同的值,則認為它們是相同的。

2. 解題

2.1 遞歸

class Solution { public:bool isSameTree(TreeNode* p, TreeNode* q) {if(!p && !q)return true;bool ans = true;same(p,q,ans);return ans;}void same(TreeNode* r1, TreeNode* r2, bool &ans) {if(ans == false)return;if(!r1 && !r2){ans = true;return;}if(r1 && r2 && r1->val == r2->val){same(r1->left,r2->left,ans);same(r1->right,r2->right,ans);}elseans = false;} };

2.2 按層遍歷

class Solution { public:bool isSameTree(TreeNode* p, TreeNode* q) {if(!p && !q)return true;if((p && !q)||(!p && q))return false;queue<TreeNode*> q1, q2;q1.push(p),q2.push(q);while(1){if(q1.front()->val != q2.front()->val){return false;}if(q1.front()->left && q2.front()->left)q1.push(q1.front()->left),q2.push(q2.front()->left);else if((q1.front()->left && !q2.front()->left)||(!q1.front()->left && q2.front()->left))return false;if(q1.front()->right && q2.front()->right)q1.push(q1.front()->right),q2.push(q2.front()->right);else if((q1.front()->right && !q2.front()->right)||(!q1.front()->right && q2.front()->right))return false;q1.pop(),q2.pop();if((q1.empty()&&!q2.empty())||(!q1.empty()&&q2.empty()))return false;if(q1.empty()&&q2.empty())return true;}return true;} };

總結

以上是生活随笔為你收集整理的LeetCode 100. 相同的树(二叉树遍历)的全部內容,希望文章能夠幫你解決所遇到的問題。

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