LeetCode
来源:互联网 发布:淘宝店铺音乐怎么添加 编辑:程序博客网 时间:2024/06/06 01:12
问题 easy
Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.
Example:
Input: 1 \ 3 / 2Output:1Explanation: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.
代码
/** * 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 { int min_dif = INT_MAX, val = -1;public: // 方法一:迭代法、中序遍历 int getMinimumDifference(TreeNode* root) { int min, previous; int flag = 0; stack<TreeNode*> stack; while(root || !stack.empty()) { while(root) { stack.push(root); root = root->left; } root = stack.top(); stack.pop(); if(flag == 0) { previous = root->val; flag ++; } else if(flag == 1) { min = root->val - previous; previous = root->val; flag ++; } else { min = (min < root->val - previous) ? min : root->val - previous; previous = root->val; } root = root->right; } return min; } //方法二:递归法 void inorderTraverse(TreeNode* root, int& val, int& min_dif) { if (root->left != NULL) inorderTraverse(root->left, val, min_dif); if (val >= 0) min_dif = min(min_dif, root->val - val); val = root->val; if (root->right != NULL) inorderTraverse(root->right, val, min_dif); } int getMinimumDifference(TreeNode* root) { auto min_dif = INT_MAX, val = -1; inorderTraverse(root, val, min_dif); return min_dif; } //方法三:递归法2,需要额外定义私有成员数据 int getMinimumDifference(TreeNode* root) { if (root->left != NULL) getMinimumDifference(root->left); if (val >= 0) min_dif = min(min_dif, root->val - val); val = root->val; if (root->right != NULL) getMinimumDifference(root->right); return min_dif; }};
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- LeetCode
- Ubuntu13下调试USB AUDIO的一些记录
- 我的第一个JAVA程序——计算正方形面积
- 习题6.4
- C++实验20
- LeetCode
- 计算1到10 20到30 35到45的和
- java中的修饰符
- lnmp一键安装环境上laravel报500错误记录
- C#中Socket 和 Tcp 连接的区别
- jq,得到 相同 calss 属性的 标签,个数,值,
- LeetCode
- Next主题个性化之自动更换背景图片
- Python(10)萌新也能看的懂——用PyMySQL处理MySQL数据库