diff --git a/problems/0530.二叉搜索树的最小绝对差.md b/problems/0530.二叉搜索树的最小绝对差.md index 8c47b633..bc9645dc 100644 --- a/problems/0530.二叉搜索树的最小绝对差.md +++ b/problems/0530.二叉搜索树的最小绝对差.md @@ -547,31 +547,25 @@ impl Solution { 递归中解决 ```rust -static mut PRE: Option = None; -static mut MIN: i32 = i32::MAX; - impl Solution { pub fn get_minimum_difference(root: Option>>) -> i32 { - unsafe { - PRE = None; - MIN = i32::MAX; - Self::inorder(root); - MIN - } + let mut pre = None; + let mut min = i32::MAX; + Self::inorder(root, &mut pre, &mut min); + min } - pub fn inorder(root: Option>>) { + pub fn inorder(root: Option>>, pre: &mut Option, min: &mut i32) { if root.is_none() { return; } let node = root.as_ref().unwrap().borrow(); - Self::inorder(node.left.clone()); - unsafe { - if let Some(pre) = PRE { - MIN = (node.val - pre).min(MIN).abs(); - } - PRE = Some(node.val) + Self::inorder(node.left.clone(), pre, min); + if let Some(pre) = pre { + *min = (node.val - *pre).min(*min); } - Self::inorder(node.right.clone()); + *pre = Some(node.val); + + Self::inorder(node.right.clone(), pre, min); } } ```