783. Minimum Distance Between BST Nodes

783. Minimum Distance Between BST Nodes

题目描述

Given a Binary Search Tree (BST) with the root node root, return the minimum difference between the values of any two different nodes in the tree.

Example :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Input: root = [4,2,6,1,3,null,null]
Output: 1
Explanation:
Note that root is a TreeNode object, not an array.
The given tree [4,2,6,1,3,null,null] is represented by the following diagram:
4
/ \
2 6
/ \
1 3
while the minimum difference in this tree is 1, it occurs between node 1 and node 2, also between node 3 and node 2.

Note:

  • The size of the BST will be between 2 and 100.
  • The BST is always valid, each node’s value is an integer, and each node’s value is different.

题目大意

给定一个二叉搜索树,返回树中任意两个不同节点的最小差值。

解题思路

中序遍历树,计算最小差值。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
func minDiffInBST(_ root: TreeNode?) -> Int {
var pre = -1
var dist = Int.max
func minDiff(root: TreeNode?) {
guard let tree = root else { return }
if let left = tree.left {
minDiff(root: left)
}
if pre >= 0 {
dist = min(dist, tree.val - pre)
}
pre = tree.val
if let right = tree.right {
minDiff(root: right)
}
}
minDiff(root: root)
return dist
}
}
0%