https://leetcode.com/problems/leaf-similar-trees/

1. Use DFS:

  1. //4 ms 11.4 MB
  2. /**
  3. * Definition for a binary tree node.
  4. * struct TreeNode {
  5. * int val;
  6. * TreeNode *left;
  7. * TreeNode *right;
  8. * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  9. * };
  10. */
  11. class Solution {
  12. public:
  13. bool leafSimilar(TreeNode* root1, TreeNode* root2) {
  14. if((!root1 && root2) || (root1 && !root2) ) return false;
  15. vector<int> leaves1;
  16. vector<int> leaves2;
  17. DFS(root1, leaves1);
  18. DFS(root2, leaves2);
  19. return leaves1 == leaves2;
  20. }
  21. private:
  22. void DFS(TreeNode* root, vector<int>& leaves){
  23. if(!root) return;
  24. if(!root->left && !root->right)
  25. leaves.push_back(root->val);
  26. DFS(root->left, leaves);
  27. DFS(root->right, leaves);
  28. }
  29. };