题目考查的知识点

  • 二叉树的遍历
  • 递归遍历二叉树

题目解答方法的文字解析

  1. 题目大意是判断两颗二叉树是否正好是逆序
  2. 使用递归将遍历的结果记录到数组中
  3. 判断两个数组是否是逆序的

本题解析所用的编程语言

  • c++

完整且正确的编程代码

class Solution {
    vector<int>l,r;
  public:
    bool leafSimilar(TreeNode* root1, TreeNode* root2) {
        dfs(root1, l);
        dfs(root2, r);
        if (l.size() != r.size()) return false;
        int n = l.size();

        for (int i = 0; i < n; i++) {
            if (l[i] != r[n-i-1]) return false;
        }
        return true;
    }
    void dfs(TreeNode* root, vector<int>& list) {
        if (root == nullptr) return;
        dfs(root->left, list);
        if (root->left == nullptr && root->right == nullptr) {
            list.push_back(root->val);
        }
        dfs(root->right, list);
    }
};