LeetCode每日一题 - 783 二叉搜索树节点最小距离
难度:简单
语言:Java
二叉搜索树
二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树
二叉搜索树:一颗二叉树,可以为空;如果不为空,满足以下性质:
- 非空左子树的所有键值小于其根节点的键值
- 非空右子树的所有键值大于其根节点的键值
- 左、右子树都是二叉搜索树
左小右大,子树均为二叉搜索树
题目内容
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
解题思路
方法其实很容易想,遍历然后储存所有的节点,比较差值就好, 这里遍历用的dfs
class Solution {
public void dfs(TreeNode root, List<Integer> list) {
list.add(root.val);
if (root.left != null) dfs(root.left, list);
if (root.right != null) dfs(root.right, list);
}
public int minDiffInBST(TreeNode root) {
List<Integer> list = new ArrayList<>();
dfs(root , list);
Collections.sort(list);
int n = list.size();
int ans = Integer.MAX_VALUE;
for (int i = 1; i < n; i++) {
int cur = Math.abs(list.get(i) - list.get(i - 1));
ans = Math.min(ans, cur);
}
return ans;
}
}
其实搜索二叉树更适合使用中序遍历,今天又晚了,明天再写吧