請(qǐng)考慮一顆二叉樹(shù)上所有的葉子,這些葉子的值按從左到右的順序排列形成一個(gè) 葉值序列 。

image
舉個(gè)例子,如上圖所示,給定一顆葉值序列為 (6, 7, 4, 9, 8) 的樹(shù)。
如果有兩顆二叉樹(shù)的葉值序列是相同,那么我們就認(rèn)為它們是 *葉相似 *的。
如果給定的兩個(gè)頭結(jié)點(diǎn)分別為 root1 和 root2 的樹(shù)是葉相似的,則返回 true;否則返回 false 。
提示:
- 給定的兩顆樹(shù)可能會(huì)有
1到100個(gè)結(jié)點(diǎn)。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool leafSimilar(TreeNode* root1, TreeNode* root2)
{
vector<int> res1;
vector<int> res2;
leaf(root1,res1);
leaf(root2,res2);
if( res1.size() != res2.size()) return false;
for(int i = 0 ; i<res1.size() ; i++)
{
if( res1[i] != res2[i]) return false;
}
return true;
}
void leaf( TreeNode * root , vector<int> &res)
{
if( root == NULL ) return ;
if( root ->left==NULL && root->right ==NULL ) res.push_back(root->val);
leaf(root ->left , res );
leaf(root ->right , res );
}
};