题目考察的知识点:树的遍历

题目解答方法的文字分析:将树的叶子结点插入到一个数组中,然后比较两个数组是否逆序。

本题解析所用的编程语言: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;
}