給你一個二叉搜索樹的根節點 root ,返回 樹中任意兩不同節點值之間的最小差值 。
注意:本題與 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同
示例 1:
輸入:root = [4,2,6,1,3]
輸出:1
解題思路
使用遞歸實現中序遍歷,二叉搜索樹的中序遍歷的順序就是元素從小到大的序列,而最小差值只在相鄰元素中產生
代碼
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {int diff=Integer.MAX_VALUE,pre=-1;public int minDiffInBST(TreeNode root) {findMinDiffInBST(root);return diff;}public void findMinDiffInBST(TreeNode root) {if(root.left!=null) findMinDiffInBST(root.left);if(pre!=-1)diff=Math.min(diff,Math.abs(root.val-pre));pre=root.val;if(root.right!=null) findMinDiffInBST(root.right);}
}