diff --git a/problems/0530.二叉搜索树的最小绝对差.md b/problems/0530.二叉搜索树的最小绝对差.md index 984fefe5..8c47b633 100644 --- a/problems/0530.二叉搜索树的最小绝对差.md +++ b/problems/0530.二叉搜索树的最小绝对差.md @@ -576,6 +576,38 @@ impl Solution { } ``` +迭代 + +```rust +impl Solution { + pub fn get_minimum_difference(mut root: Option>>) -> i32 { + if root.is_none() { + return 0; + } + let mut stack = vec![]; + let mut pre = -1; + let mut res = i32::MAX; + while root.is_some() || !stack.is_empty() { + while let Some(node) = root { + root = node.borrow().left.clone(); + stack.push(node); + } + + let node = stack.pop().unwrap(); + + if pre >= 0 { + res = res.min(node.borrow().val - pre); + } + + pre = node.borrow().val; + + root = node.borrow().right.clone(); + } + res + } +} +``` +