530. 二叉搜索树的最小绝对差
对于二叉搜索树,其中序遍历得到的序列是有序的,因此按照中序遍历的顺序计算差值则省去了计算绝对值的环节,逻辑上也更加明晰。这里主要是再熟悉一下闭包的函数写法。
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func getMinimumDifference(root *TreeNode) int {
var pre *TreeNode
min := math.MaxInt64
var travel func(node *TreeNode)
travel = func(node *TreeNode){
if node == nil{
return
}
travel(node.Left)
if pre != nil && node.Val - pre.Val < min{
min = node.Val - pre.Val
}
pre = node
travel(node.Right)
}
travel(root)
return min
}
501. 二叉搜索树中的众数
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func findMode(root *TreeNode) []int {
res := make([]int, 0)
count, max := 1, 1
var pre *TreeNode
var travel func(node *TreeNode)
travel = func(node *TreeNode){
if node == nil{
return
}
travel(node.Left)
if pre != nil && pre.Val == node.Val{
count++
}else{
count = 1
}
if count >= max{
if count > max && len(res) > 0 {
res = []int{node.Val}
} else {
res = append(res, node.Val)
}
max = count
}
pre = node
travel(node.Right)
}
travel(root)
return res
}