老师,LeetCode的第530道题,能不能提供一下解题思路啊

来源:9-7 更多线段树相关的话题

qq_湿腻焦糊_0

2018-04-30

关于二叉树求最小绝对值的那个



写回答

1回答

liuyubobobo

2018-04-30

最简单的方法:任意顺序遍历一遍二叉树,将所有节点的值存储在数组中,之后对数组排序,相邻元素相减,找差的最小值。这个思路参见:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0530-Minimum-Absolute-Difference-in-BST/java-0530/src/Solution.java


由于题目给定的树是二分搜索树,所有直接使用中序遍历,就可以得到所有元素的升序排序结果。省去了排序的过程。这个思路参见:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0530-Minimum-Absolute-Difference-in-BST/java-0530/src/Solution2.java


我们之前的方法都是先预存所有的元素到数组中,再找到解。实际上完全可以在中序遍历的过程中,一边遍历一边去寻找这个解。这样做省去了预存所有元素到数组中的空间开销。这个思路参见:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0530-Minimum-Absolute-Difference-in-BST/java-0530/src/Solution3.java

4
1
qq_湿腻焦糊_0
感谢老师的帮助!!
2018-04-30
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程