LeetCode-530. Minimum Absolute Difference in BST

标签: LeetCode BST
3人阅读 评论(0) 收藏 举报
分类:

Description

Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.

Example

Input:

   1
    \
     3
    /
   2

Output:
1

Explanation:
The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).

Note

There are at least two nodes in this BST.

Solution 1(C++)

class Solution {
public:
    void TraverseTree(TreeNode* node, int &prev, int &res){
        if(!node) return;
        TraverseTree(node->left,prev,res);
        if(prev!=-1) res=min(res,node->val-prev);
        prev=node->val;
        TraverseTree(node->right,prev,res);
    }
    int getMinimumDifference(TreeNode* root) {
        int res=INT_MAX, prev=-1;
        TraverseTree(root,prev,res);
        return res;
    }
};

算法分析

我之前写的使用了vecotr来按照前序遍历的方法遍历BST的,但是还是要学会不适用额外的储存空间应该如何解决问题。那么这道题就是很经典的前序遍历了。

程序分析

前序遍历的基本套路我已经熟悉了,那么中序,后序如法炮制。但是要注意的是,不适用额外的储存空间,如何传递之前的节点值。其实解法一可以分为三步走。

  1. 前序遍历:先向左走
  2. 回到中间,如果pre不是-1,就可以对res更新;如果pre是-1,那么就不更新res。走到node,都要将node更新为pre
  3. 前序遍历:最后向右走

其实这里的道理不难懂。前序遍历无非就是:左 - > 中 - > 右。 一直往左的时候,pre没有办法更新,自然就是设定的初始值-1。当左边走完了,就自然回到了中,下一步就是右了,那么在右之前,中就应该成为了pre。

查看评论

[leetcode] 530. Minimum Absolute Difference in BST

Given a binary search tree with non-negative values, find the minimum absolute difference between ...
  • TstsUgeg
  • TstsUgeg
  • 2017-03-01 16:19:38
  • 1398

[LeetCode]530. Minimum Absolute Difference in BST(BST的最小绝对差)

530. Minimum Absolute Difference in BSTGiven a binary search tree with non-negative values, find the...
  • whl_program
  • whl_program
  • 2017-04-02 23:34:49
  • 376

LeetCode-530. Minimum Absolute Difference in BST (Java)

Given a binary search tree with non-negative values, find the minimum absolute difference between ...
  • NOadu
  • NOadu
  • 2017-06-18 08:51:44
  • 261

Leetcode-530. Minimum Absolute Difference in BST

前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN...
  • mcf171
  • mcf171
  • 2017-02-26 13:38:44
  • 576

Minimum Absolute Difference in BST

leectcode第530题,竞赛题的签到题,比赛居然不会做。。。 主要是基本的数据结构还不熟,这里要求求一个二叉搜索树节点直接数值绝对差的最小值。注意,节点间是指所有节点之间,不是相邻节点之间。 ...
  • freedom098
  • freedom098
  • 2017-02-26 16:07:06
  • 601

leetcode 530. Minimum Absolute Difference in BST

leetcode 530. Minimum Absolute Difference in BST #coding=utf-8 ''' Given a binary searc...
  • accumulate_zhang
  • accumulate_zhang
  • 2017-04-04 22:46:53
  • 476

No.530 Minimum Absolute Difference in BST

1、问题描述:Given a binary search tree with non-negative values, find the minimum absolute difference bet...
  • qiaosen20
  • qiaosen20
  • 2017-04-15 11:17:49
  • 141

leetcode-530. Minimum Absolute Difference in BST

考察点:平衡二叉树性质,遍历特点; 思路:BST中序遍历是有序的; C++ 代码:/** * Definition for a binary tree node. * struct TreeN...
  • u014257954
  • u014257954
  • 2017-05-19 09:38:00
  • 99

530. Minimum Absolute Difference in BST

trival/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode...
  • zeroQiaoba
  • zeroQiaoba
  • 2017-02-28 09:27:30
  • 129

LeetCode530. Minimum Absolute Difference in BST

530.Minimum Absolute Difference in BST Given a binary search tree with non-negative values, find th...
  • YTTmiao
  • YTTmiao
  • 2017-11-27 15:41:55
  • 66
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 2494
    排名: 1万+
    文章存档
    最新评论