100. 相同的樹 - 8月7日
阿新 • • 發佈:2020-08-07
題目
100. 相同的樹
我的思路實現
兩棵樹同時遍歷,比較 1.深度優先,遞迴 2.廣度優先,佇列/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * };*/ class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { vector<TreeNode *> Q1; vector<TreeNode *> Q2; Q1.push_back(p); Q2.push_back(q); TreeNode * temp1; TreeNode * temp2; while(!Q1.empty()) { temp1= Q1.front(); Q1.erase(Q1.begin()); if(Q2.empty()) return false; temp2 = Q2.front(); Q2.erase(Q2.begin()); if(temp1==NULL && temp2==NULL) { continue; } else if(temp1==NULL||temp2==NULL) {return false; } else if(temp1->val==temp2->val) { Q1.push_back(temp1->left); Q2.push_back(temp2->left); Q1.push_back(temp1->right); Q2.push_back(temp2->right); } else{ return false; } } if(Q2.empty()) return true; else return false; } }; /* 兩棵樹同時遍歷,比較 1.深度優先,遞迴 class Solution { public: bool compare(TreeNode *t1,TreeNode *t2) { if(t1==NULL && t2==NULL) { return true; } else if(t1==NULL ||t2==NULL) { return false; } else if(t1->val!=t2->val) { return false; } else if(t1->val==t2->val) { if(compare(t1->left,t2->left)) return compare(t1->right,t2->right); else return false; } return false; } bool isSameTree(TreeNode* p, TreeNode* q) { return compare(p,q); } }; 2.廣度優先,佇列 class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { vector<TreeNode *> Q1; vector<TreeNode *> Q2; Q1.push_back(p); Q2.push_back(q); TreeNode * temp1; TreeNode * temp2; while(!Q1.empty()) { temp1 = Q1.front(); Q1.erase(Q1.begin()); if(Q2.empty()) return false; temp2 = Q2.front(); Q2.erase(Q2.begin()); if(temp1==NULL && temp2==NULL) { continue; } else if(temp1==NULL||temp2==NULL) { return false; } else if(temp1->val==temp2->val) { Q1.push_back(temp1->left); Q2.push_back(temp2->left); Q1.push_back(temp1->right); Q2.push_back(temp2->right); } else{ return false; } } if(Q2.empty()) return true; else return false; } }; */