Gjort 108

This commit is contained in:
Håkon Størdal 2025-03-25 17:19:24 +01:00
parent 114fa8da6f
commit c09ac53fef
2 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,6 @@
[package]
name = "convert-sorted-array-to-binary-search-tree-108"
version = "0.1.0"
edition = "2024"
[dependencies]

View file

@ -0,0 +1,47 @@
// Definition for a binary tree node.
#[derive(Debug, PartialEq, Eq)]
pub struct TreeNode {
pub val: i32,
pub left: Option<Rc<RefCell<TreeNode>>>,
pub right: Option<Rc<RefCell<TreeNode>>>,
}
impl TreeNode {
#[inline]
pub fn new(val: i32) -> Self {
TreeNode {
val,
left: None,
right: None,
}
}
}
struct Solution {}
use std::cell::RefCell;
use std::rc::Rc;
impl Solution {
pub fn sorted_array_to_bst(nums: Vec<i32>) -> Option<Rc<RefCell<TreeNode>>> {
fn build_bst(nums: &[i32], start: i32, end: i32) -> Option<Rc<RefCell<TreeNode>>> {
if start > end {
return None;
}
let mid = (start + end) / 2;
Some(Rc::new(RefCell::new(TreeNode {
val: nums[mid as usize],
left: build_bst(nums, start, mid - 1),
right: build_bst(nums, mid + 1, end),
})))
}
build_bst(&nums, 0, (nums.len() as i32) - 1)
}
}
fn main() {
println!(
"{:?}",
Solution::sorted_array_to_bst(vec![-10, -3, 0, 5, 9])
);
}