题目转载:Leetcode530
给你一个二叉搜索树的根节点 root
,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
示例 1:
输入:root = [4,2,6,1,3] 输出:1
示例 2:
输入:root = [1,0,48,null,null,12,49] 输出:1
#include <iostream>
#include <math.h>
using namespace std;
int pre;
int ans;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
};
void inorderTraversal(TreeNode* root) { //树的中序遍历
if (root == NULL) {
return;
}
inorderTraversal(root->left); //先遍历左子树
if (pre == -1) { //如果前一个节点是-1,那么就直接赋值为当前节点的值
pre = root->val;
}
else { //如果前一个结点有值,那么就进行相应的差值计算,和当前的最小值比较大小
ans = min(ans, root->val - pre);
pre = root->val;
}
inorderTraversal(root->right);
}
int minDifference(TreeNode* root) {
ans = INT_LEAST64_MIN;
pre = -1;
inorderTraversal(root);
return ans;
}
想要一起学习算法,备考考研复试,初试,408专业课的学习,或者是准备参加复试算法突击的小伙伴可以滴滴我哈,备注算法哦!