首页 > 试题广场 >

二叉搜索树最小差值

[编程题]二叉搜索树最小差值
  • 热度指数:1125 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一棵二叉搜索树,请你返回树中任意两节点之差的最小值。

数据范围:二叉树节点数满足 ,二叉树的节点值满足 ,保证每个节点的值都不同
示例1

输入

{2,1,3,#,#,#,4}

输出

1
示例2

输入

{3,1,5,#,#,#,9}

输出

2

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
package main
//import "fmt"
import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return int整型
*/
func minDifference( root *TreeNode ) int {
    arr:=[]int{}
    var order func(*TreeNode)
    order=func(root *TreeNode){
        if root==nil{
            return
        }
        order(root.Left)
        arr=append(arr,root.Val)
        order(root.Right)
    }
    order(root)
    ans:=arr[1]-arr[0]
    for i:=1;i<len(arr)-1;i++{
        tmp:=arr[i+1]-arr[i]
        if tmp<ans{
            ans=tmp
        }
    }
    return ans
}


发表于 2023-03-09 08:30:01 回复(0)