|
@@ -0,0 +1,35 @@
|
|
|
+var max int = 0
|
|
|
+
|
|
|
+/**
|
|
|
+ * Definition for a binary tree node.
|
|
|
+ * type TreeNode struct {
|
|
|
+ * Val int
|
|
|
+ * Left *TreeNode
|
|
|
+ * Right *TreeNode
|
|
|
+ * }
|
|
|
+ */
|
|
|
+func findFrequentTreeSum(root *TreeNode) (res []int) {
|
|
|
+ max = 0
|
|
|
+ freq := make(map[int]int)
|
|
|
+ postorder(root, &freq)
|
|
|
+ for k, v := range freq {
|
|
|
+ if v == max {
|
|
|
+ res = append(res, k)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func postorder(root *TreeNode, freq *map[int]int) int {
|
|
|
+ if root == nil {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ l := postorder(root.Left, freq)
|
|
|
+ r := postorder(root.Right, freq)
|
|
|
+ sum := l + r + root.Val
|
|
|
+ (*freq)[sum]++
|
|
|
+ if max < (*freq)[sum] {
|
|
|
+ max = (*freq)[sum]
|
|
|
+ }
|
|
|
+ return sum
|
|
|
+}
|