783. 二叉搜索树节点最小距离

**给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。
示例:
输入: root = [4,2,6,1,3,null,null]
输出: 1
解释:
注意,root是树节点对象(TreeNode object),而不是数组。
给定的树 [4,2,6,1,3,null,null] 可表示为下图:

      4
    /   \
  2      6
 / \    
1   3  

最小的差值是 1, 它是节点1和节点2的差值, 也是节点3和节点2的差值。
由于二叉搜索树有以下特点:

1.若左子树不为空,则梭子树上所有结点的值均小于根结点
2.若右子树不空,则右子树上所有结点值大于根结点
3.左右子树也为二叉搜索树
所以二叉树的中序遍历即为从小到大的排序序列,dfs就是将中序遍历的结果存到数组arr中,只要遍历数组arr,找到相邻项之间最小差,即为所得结果。
被leetcode题吊打的第四天,做个笔记留着学习

var minDiffInBST = function(root) {
   var arr=new Array();
   var min = Infinity;
   arr=dfs(root,arr);
    for(let i=0;i<arr.length-1;i++){
        min=Math.min(min,arr[i+1]-arr[i]);
    }
    return min;
};
// 中序遍历将结点存入arr
function dfs(node,arr){
    if(node==null) return ;
     dfs(node.left,arr);
    arr.push(node.val);
    dfs(node.right,arr);
    return arr;
}

你可能感兴趣的:(javascript,二叉树,数据结构)