知识点
二叉树
思路
要我们判断两棵二叉树的叶子结点是不是从左到右逆序的,我们只需要遍历二叉树,从左到右找到叶子结点的值加入序列,最后比较即可。遍历二叉树时,先左子树后右子树即可做到访问到叶子结点是从左到右的。
时间复杂度
访问每个结点最多一次,和节点个数成正比
AC code (C++)
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root1 TreeNode类 * @param root2 TreeNode类 * @return bool布尔型 */ bool leafSimilar(TreeNode* root1, TreeNode* root2) { vector<int> a, b; function<void(vector<int>&, TreeNode*)> dfs = [&](vector<int>& v, TreeNode* root) { if(!root) return; if (!root->left and !root->right) { v.push_back(root->val); return; } dfs(v, root->left); dfs(v, root->right); }; dfs(a, root1); dfs(b, root2); reverse(b.begin(), b.end()); return a == b; } };