leetcode-Minimum Absolute Difference in BST
来源:互联网 发布:阿里云 免费开通码 编辑:程序博客网 时间:2024/05/21 17:13
Question:
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).
Solution:
/** * 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) { if(root == NULL){ return 0x7fffffff; } int d = 0x7fffffff; int lmin = 0x7fffffff; int rmin = 0x7fffffff; if(root->left){ TreeNode* pre = root->left; TreeNode* cur = pre->right; while(cur){ pre = cur; cur = cur->right; } lmin = root->val - pre->val; } if(root->right){ TreeNode* pre = root->right; TreeNode* cur = pre->left; while(cur){ pre = cur; cur = cur->left; } rmin = pre->val - root->val; } d = lmin<rmin?lmin:rmin; int d1 = getMinimumDifference(root->left); int d2 = getMinimumDifference(root->right); int tmp = d1 < d2 ? d1:d2; return tmp < d?tmp:d; }};
总结:
虽然该题定位为easy,不过我认为还是有一定难度的,主要考察二叉搜索树,及其递归函数的用法。解可分为三部分,包含该节点的最小距离,该节点左子树的最小距离,该节点右子树距离,然后取这三个值最小值。包含该节点的最小距离 d =min{该节点 - 左子树中的最右下节点,右子树最左下节点 - 该节点},然后左右子树递归分别得到d1 d2,最后再求最小值min{d,d1,d2}。
0 0
- Leetcode-530. Minimum Absolute Difference in BST
- LeetCode: 503.Minimum Absolute Difference in BST
- 【Leetcode】530. Minimum Absolute Difference in BST
- Leetcode 530. Minimum Absolute Difference in BST
- Leetcode #530 Minimum Absolute Difference in BST
- [leetcode] 530. Minimum Absolute Difference in BST
- LeetCode-530. Minimum Absolute Difference in BST
- LeetCode 530. Minimum Absolute Difference in BST
- [LeetCode]530. Minimum Absolute Difference in BST
- Leetcode 530 Minimum Absolute Difference in BST
- leetcode-Minimum Absolute Difference in BST
- LeetCode | 530. Minimum Absolute Difference in BST
- leetcode 530. Minimum Absolute Difference in BST
- [leetcode]-530. Minimum Absolute Difference in BST
- [LeetCode]530. Minimum Absolute Difference in BST
- [leetcode]: 530. Minimum Absolute Difference in BST
- leetcode-530. Minimum Absolute Difference in BST
- leetcode 530. Minimum Absolute Difference in BST
- Linux基础-Centos
- CSS-两侧固定宽度,中间自适应的三列布局
- hduoj 2020绝对值排序
- 96:Palindrome Partitioning II
- 《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》笔记
- leetcode-Minimum Absolute Difference in BST
- 当尝试打开 /dev/mapper/centos-root 时 找不到有效的文件系统超级块.
- CCF CSP 编程题目和解答-----试题名称: 出现次数最多的数 --------201312-1
- “三天打鱼两天晒网”一只小小喵的尝试
- JS提取字符串方法:substring、substr、slice的区别
- qscoj:喵哈哈村的卢西奥
- 【模拟】[NOIP2011]铺地毯[c++]
- 二进制流
- 自定义布局子流布局实现标签功能