872. Leaf-Similar Trees
程序员文章站
2022-06-03 13:58:02
...
Consider all the leaves of a binary tree. From left to right order, the values of those leaves form a leaf value sequence.
For example, in the given tree above, the leaf value sequence is (6, 7, 4, 9, 8).
Two binary trees are considered leaf-similar if their leaf value sequence is the same.
Return true if and only if the two given trees with head nodes root1 and root2 are leaf-similar.
Note:
Both of the given trees will have between 1 and 100 nodes.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
private:
vector<int> vec1;
vector<int> vec2;
void postorderTraversal(TreeNode* root, vector<int>& vec){
if(!root)
return;
postorderTraversal(root->left, vec);
postorderTraversal(root->right,vec);
if(!root->left && !root->right){
vec.push_back(root->val);
}
}
public:
bool leafSimilar(TreeNode* root1, TreeNode* root2) {
postorderTraversal(root1, vec1);
postorderTraversal(root2, vec2);
size_t n1 = vec1.size();
size_t n2 = vec2.size();
if(n1 == n2){
for (int i = 0; i < n1; ++i) {
if(vec1[i] == vec2[i]){
continue;
}
else
return false;
}
}
else{
return false;
}
return true;
}
};
上一篇: 排序(树状数组求逆序数+离散化)
下一篇: 原生JS实现自定义滚动条效果