Skip to content

Commit 723fe55

Browse files
committed
872. Leaf-Similar Trees
1 parent 1b58826 commit 723fe55

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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

Comments
 (0)