1
+ import scala .annotation .tailrec
2
+
3
+ /**
4
+ * Definition for a binary tree node.
5
+ * class TreeNode(_value: Int = 0, _left: TreeNode = null, _right: TreeNode = null) {
6
+ * var value: Int = _value
7
+ * var left: TreeNode = _left
8
+ * var right: TreeNode = _right
9
+ * }
10
+ */
11
+
12
+ class TreeNode (
13
+ _value : Int = 0 ,
14
+ _left : TreeNode = null ,
15
+ _right : TreeNode = null
16
+ ) {
17
+ var value : Int = _value
18
+ var left : TreeNode = _left
19
+ var right : TreeNode = _right
20
+ }
21
+
22
+ object Solution {
23
+ def leafSimilar (root1 : TreeNode , root2 : TreeNode ): Boolean = {
24
+ def go (node : TreeNode , acc : List [Int ]): List [Int ] = {
25
+ (Option (node.left), Option (node.right)) match
26
+ case (Some (l), Some (r)) => go(l, acc) ++ go(r, acc)
27
+ case (Some (node), None ) => go(node, acc)
28
+ case (None , Some (node)) => go(node, acc)
29
+ case (None , None ) => node.value :: acc
30
+ }
31
+
32
+ go(root1, Nil ) == go(root2, Nil )
33
+ }
34
+ }
35
+
36
+ val tree1 = new TreeNode (3 ,
37
+ new TreeNode (5 , new TreeNode (6 ), new TreeNode (7 )),
38
+ new TreeNode (1 ,
39
+ new TreeNode (4 ),
40
+ new TreeNode (2 ,
41
+ new TreeNode (9 ),
42
+ new TreeNode (11 ,
43
+ new TreeNode (8 ),
44
+ new TreeNode (10 )
45
+ )
46
+ )
47
+ )
48
+ )
49
+
50
+
51
+ val tree2 = new TreeNode (1 , new TreeNode (3 ), new TreeNode (2 ))
52
+
53
+ Solution .leafSimilar(tree1, tree2)
0 commit comments