LeetCode 530. 二叉搜索树的最小绝对差 思考分析
目录
- 题目
- 思路1:递归遍历得到result数组(单调递增),然后对数组进行前后差分,取最小值
- 思路2:不用数组,进行优化
- 思路3、回顾迭代法求解
题目
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
思路1:递归遍历得到result数组(单调递增),然后对数组进行前后差分,取最小值
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:void traversal(TreeNode* cur , vector<int>& vec){if(cur == NULL) return;traversal(cur->left,vec);vec.push_back(cur->val);traversal(cur->right,vec);}int getMinimumDifference(TreeNode* root) {vector<int> result;traversal(root,result);//递增序列,所以绝对值的最小值就在差分数组中int Minimum =INT_MAX;for(int i =1;i<result.size();i++){Minimum = min(result[i]-result[i-1],Minimum);}return Minimum;}
};
不过这样的效率感觉比较低。
思路2:不用数组,进行优化
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:int Minimum =INT_MAX; TreeNode* pre =NULL; //用来记录前一个结点void traversal(TreeNode* cur){if(cur == NULL) return;traversal(cur->left);if(pre != NULL ) Minimum = min(cur->val-pre->val,Minimum);pre = cur; //更新结点traversal(cur->right);}int getMinimumDifference(TreeNode* root) {traversal(root);return Minimum;}
};
思路3、回顾迭代法求解
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public: int getMinimumDifference(TreeNode* root) {stack<TreeNode*> st;int Minimum =INT_MAX; TreeNode* cur = root;TreeNode* pre = NULL; while(!st.empty() || cur!=NULL){if(cur!=NULL){st.push(cur);cur = cur->left;}else{cur = st.top();st.pop();if(pre != NULL ) Minimum = min(cur->val-pre->val,Minimum);pre = cur; //更新结点cur = cur->right;}} return Minimum;}
};
LeetCode 530. 二叉搜索树的最小绝对差 思考分析相关推荐
- leetcode 530. 二叉搜索树的最小绝对差(Java版)
题目 https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 题解 中序遍历法. 本题要求二叉搜索树任意两节点差的绝对 ...
- leetcode 530. 二叉搜索树的最小绝对差(中序遍历)
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值.示例:输入:1\3/2输出: 1解释: 最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3). ...
- LeetCode 530二叉搜索树的最小绝对差
题目链接:力扣 思路: 中序遍历 二叉搜索树中序遍历是递增序列,要找最小绝对差,就是要找按照中序遍历,后一个数-前一个数的最小值 1.用vector数组保存中序遍历序列 class Solution ...
- LeetCode Algorithm 530. 二叉搜索树的最小绝对差
530. 二叉搜索树的最小绝对差 Ideas 前几天一直刷链表题,这道题刚看到的时候还有点懵,第一个想到的方法竟然是全排列,脑子瓦特了. 二叉树的题目基本上都得跟(前/中/后)序遍历扯点关系,一看是没 ...
- Suzy找到实习了吗 Day 21 | 二叉树进行中:530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先
530. 二叉搜索树的最小绝对差 题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 .差值是一个正数,其数值等于两值之差的绝对值. solution # Defi ...
- LeetCode 530二叉搜索树的最小绝对值差-简单
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值. 示例: 输入: 1\3/2 输出: 1 解释: 最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 ...
- leetcode系列-530. 二叉搜索树的最小绝对差
题目描述:给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 差值是一个正数,其数值等于两值之差的绝对值. 示例 1: 输入:root = [4,2,6,1,3] 输 ...
- 530. 二叉搜索树的最小绝对差
给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值. 示例 : 输入:1\3/2输出: 1解释: 最小绝对差为1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3). 注 ...
- 怎样将树的中序遍历的数输入到一个数组中_LeetCode 530.二叉搜索树的最小绝对差
题目 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值. 提示: + 树中至少有 2 个节点. + 本题与783相同 题目链接 示例 输入:13/2输出: 1 题目分析 ...
最新文章
- 拾人牙慧篇之———QQ微信的第三方登录实现
- java 日志_跟着Tomcat学编码:Java 原生日志框架分析
- 移动硬盘与电脑连接后 计算机中找不到,移动硬盘联接上电脑,可是打开我的电脑却找不到移动硬盘。...
- kafka java_Kafka 使用Java实现数据的生产和消费demo
- 谷歌浏览器出现“远程计算机访问失败问题”
- android 抓log暗码,「有用功」强大的安卓暗码命令 你都知道吗?
- 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
- Linux下使用exec命令将文件与文件描述符关联
- java 导出Excel 转图片地址为图片
- Linux驱动入门总结
- 书摘—松下幸之助全传
- Easy Mobile插件之Advertising
- unity 安卓apk安装后的文件路径
- 通用计数器的检定方案
- 四种常见的post请求中的参数形式
- 软件工程和计算机科学排名,计算机科学与技术与软件工程专业排名(15页)-原创力文档...
- [转]金属加工工艺基础知识
- 摄像头模组简介与质量管控(连载三)
- 机器人教育在学校普及
- 宝马将自动驾驶和打车服务结合,最快明年在德国上路