File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Time: O(n)
2
+ // Space: O(h)
3
+
4
+ /* *
5
+ * Definition for a binary tree node.
6
+ * struct TreeNode {
7
+ * int val;
8
+ * TreeNode *left;
9
+ * TreeNode *right;
10
+ * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
11
+ * };
12
+ */
13
+ class Solution {
14
+ public:
15
+ bool leafSimilar (TreeNode* root1, TreeNode* root2) {
16
+ vector<TreeNode*> s1{root1} , s2{root2};
17
+ while (!s1.empty () && !s2.empty ()) {
18
+ if (dfs (s1) != dfs (s2)) {
19
+ return false ;
20
+ }
21
+ }
22
+ return s1.empty () && s2.empty ();
23
+ }
24
+
25
+ private:
26
+ int dfs (vector<TreeNode*>& s) {
27
+ while (true ) {
28
+ const auto node = s.back (); s.pop_back ();
29
+ if (node->right ) {
30
+ s.emplace_back (node->right );
31
+ }
32
+ if (node->left ) {
33
+ s.emplace_back (node->left );
34
+ }
35
+ if (!node->left && !node->right ) {
36
+ return node->val ;
37
+ }
38
+ }
39
+ }
40
+ };
You can’t perform that action at this time.
0 commit comments