前言
持续更新了
正文
问题来源
本问题来自leetcode上的501题。
问题描述
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。
假定 BST 有如下定义:
结点左子树中所含结点的值小于等于当前结点的值
结点右子树中所含结点的值大于等于当前结点的值
左子树和右子树都是二叉搜索树
示例 1:
输入: 1
\
2
/
2
输出:[2]
分析:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func findMode(root *TreeNode) []int {
var cur int
var count int
var max int
var res []int
res = make([]int, 0)
var dfs func(root *TreeNode)
dfs = func(root *TreeNode) {
if root == nil {
return
}
dfs(root.Left)
if root.Val == cur {
count++
} else {
cur = root.Val
count = 1
}
if count > max {
res = res[:0]
res = append(res, cur)
max = count
} else if max == count {
res = append(res, cur)
}
dfs(root.Right)
}
dfs(root)
return res
}
总结:
勤思考。
结语
不管怎么样好好加油。