LeetCode 100. 相同的树(二叉树遍历)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 100. 相同的树(二叉树遍历)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。
如果兩個樹在結構上相同,并且節(jié)點具有相同的值,則認為它們是相同的。
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. 相同的树(二叉树遍历)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言 define 关键字,c语言中d
- 下一篇: 进度条上的小圆点怎么做_傲视网:【AE教