[Day31-02]-[二叉树] 二叉搜索树节点最小距离
作者:方勇(gopher)
- 2022 年 4 月 30 日
本文字数:622 字
阅读完需:约 2 分钟
783. 二叉搜索树节点最小距离
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
示例 1:
输入:root = [4,2,6,1,3]输出:1
复制代码
示例 2:
输入:root = [1,0,48,null,null,12,49]输出:1复制代码
题解:
func TestMinDiffInBST(t *testing.T) { // [49,52,60,89,90] root := &TreeNode{ // 初始化一棵树 Val: 90, Left: &TreeNode{ Val: 60, Left: &TreeNode{ Val: 49, Right: &TreeNode{ Val: 52, }, }, Right: &TreeNode{ Val: 89, }, }, } var minDiffInBST func(root *TreeNode) int // 题解 关键部分是 升序数组中最小差值一定是两个相邻数字的差值 // 我们知道采用中序遍历可以得到BST的升序数组 // 用一个pre记录前面一个节点的Val,如果和当前节点的Val差值小于ans,则更新ans var ans, pre = math.MaxInt, -1 // 初始化ans,pre var dfs func(root *TreeNode) dfs = func(root *TreeNode) { if root == nil { // 当递归完成后退出 return }
// LDR 升序 dfs(root.Left) // 处理逻辑 更新ans的值 if pre != -1 && ans > root.Val-pre { ans = root.Val - pre } // 记录上一个节点的Val pre = root.Val dfs(root.Right) } minDiffInBST = func(root *TreeNode) int { dfs(root) if ans == math.MaxInt { return 0 } return ans } t.Log(minDiffInBST(root))}
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 2
方勇(gopher)
关注
Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入
我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!










评论