题目考察的知识点:树的遍历
题目解答方法的文字分析:将树的叶子结点插入到一个数组中,然后比较两个数组是否逆序。
本题解析所用的编程语言:c++
void dfs(TreeNode* node, vector<int>& seq)
{
if (!node->left && !node->right)
seq.push_back(node->val);
else
{
if (node->left)
dfs(node->left, seq);
if (node->right)
dfs(node->right, seq);
}
}
bool leafSimilar(TreeNode* root1, TreeNode* root2)
{
vector<int> seq1;
if (root1)
dfs(root1, seq1);
vector<int> seq2;
if (root2)
dfs(root2, seq2);
for (int i = 0, j = seq2.size() - 1; i < seq1.size(); ++i, --j)
{
if (seq1[i] != seq2[j])
return false;
}
return true;
}

京公网安备 11010502036488号