本文主要是介绍Leetcode 783. 二叉搜索树节点最小距离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。
C++
思路,将最小值设为成员变量,因为是二叉搜索树,所以其中序遍历刚好是升序,在递归过程中记录相邻值得差值,求最小就好。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*//*BST的中序遍历结果为节点值升序结果,所以最小距离为升序结果相邻两数的差,所以可以在递归生成中序遍历时求最小差值,从结果集中有两个节点结果时开始计算,求出最小值递归:停止条件:节点为空返回什么: 只是遍历,什么也不用返回本级递归干什么:中序遍历,并且求相邻节点得差值,记录最小差值,*/
class Solution {
public:int this_min=INT_MAX;int pre=INT_MAX; //记录升序求差值得前一个值int minDiffInBST(TreeNode* root) {if(!root) return INT_MAX;dfs(root);return this_min;}void dfs(TreeNode* root){if(!root) return;dfs(root->left);this_min=min(this_min,abs(root->val-pre));pre=root->val;dfs(root->right);}
};
这篇关于Leetcode 783. 二叉搜索树节点最小距离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!