Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6e3731f

Browse files
authored
Create 0652-find-duplicate-subtrees.kt
1 parent 51ff710 commit 6e3731f

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* Example:
3+
* var ti = TreeNode(5)
4+
* var v = ti.`val`
5+
* Definition for a binary tree node.
6+
* class TreeNode(var `val`: Int) {
7+
* var left: TreeNode? = null
8+
* var right: TreeNode? = null
9+
* }
10+
*/
11+
class Solution {
12+
fun findDuplicateSubtrees(root: TreeNode?): List<TreeNode?> {
13+
val res = ArrayList<TreeNode?>()
14+
val subTrees = HashMap<String, Int>()
15+
16+
fun preOrder(root: TreeNode?): String {
17+
root?: return "null"
18+
val s = ",${root.value},${preOrder(root.left)},${preOrder(root.right)}"
19+
if(subTrees.contains(s)){
20+
if(subTrees[s] == 1) {
21+
res.add(root)
22+
}
23+
}
24+
subTrees[s] = subTrees.getOrDefault(s, 0) + 1
25+
return s
26+
}
27+
28+
preOrder(root)
29+
return res
30+
}
31+
32+
val TreeNode.value get() = this.`val`
33+
}

0 commit comments

Comments
 (0)