考虑一个二叉树的所有叶子。这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。
(没有图 只有我手画的草图)
举个例子,给定一个如上图所示的树,其叶值序列为 (6, 7, 4, 9, 8)
。
如果两个二叉树的叶值序列相同,我们就认为它们是 叶相似的。
如果给定的两个头结点分别为 root1
和 root2
的树是叶相似的,返回 true
;否则返回 false
。
提示:
- 给定的两个树会有
1
到100
个结点。
//个人AC答案 遍历然后判断长度然后判断相等
class Solution {
public:
void traverse(TreeNode *r, vector<int> &a)
{
if(!r) return;
if(!(r->left) && !(r->right)) a.push_back(r->val);
traverse(r->left, a);
traverse(r->right, a);
}
bool leafSimilar(TreeNode* root1, TreeNode* root2) {
vector<int> a, b;
traverse(root1, a);
traverse(root2, b);
if(a.size()!=b.size()) return false;
for(int i = 0; i < a.size(); i++)
if(a[i] != b[i]) return false;
return true;
}
};