From 5c9e23b70792a203177169f690fe264309481446 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Mon, 10 Jun 2024 11:14:17 +0800 Subject: [PATCH] 20240610 Finished --- src/problem/mod.rs | 3 +- src/problem/p129_sum_root_to_leaf_numbers.rs | 67 ++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/problem/p129_sum_root_to_leaf_numbers.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index d977df8..de9fa75 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -144,4 +144,5 @@ mod p100_same_tree; mod p226_invert_binary_tree; mod p101_symmetric_tree; mod p114_flatten_binary_tree_to_linked_list; -mod p112_path_sum; \ No newline at end of file +mod p112_path_sum; +mod p129_sum_root_to_leaf_numbers; \ No newline at end of file diff --git a/src/problem/p129_sum_root_to_leaf_numbers.rs b/src/problem/p129_sum_root_to_leaf_numbers.rs new file mode 100644 index 0000000..a58ee57 --- /dev/null +++ b/src/problem/p129_sum_root_to_leaf_numbers.rs @@ -0,0 +1,67 @@ +/** + * [129] Sum Root to Leaf Numbers + */ +pub struct Solution {} + +use crate::util::tree::{TreeNode, to_tree}; + +// submission codes start here + +// Definition for a binary tree node. +// #[derive(Debug, PartialEq, Eq)] +// pub struct TreeNode { +// pub val: i32, +// pub left: Option>>, +// pub right: Option>>, +// } +// +// impl TreeNode { +// #[inline] +// pub fn new(val: i32) -> Self { +// TreeNode { +// val, +// left: None, +// right: None +// } +// } +// } +use std::rc::Rc; +use std::cell::RefCell; +impl Solution { + fn dfs_sum(node: &Rc>, last_num: i32, result: &mut i32) { + if node.borrow().left.is_none() && node.borrow().right.is_none() { + *result += last_num * 10 + node.borrow().val; + } + + if let Some(left) = &node.borrow().left { + Self::dfs_sum(left, last_num * 10 + node.borrow().val, result); + } + + if let Some(right) = &node.borrow().right { + Self::dfs_sum(right, last_num * 10 + node.borrow().val, result) + } + } + + + pub fn sum_numbers(root: Option>>) -> i32 { + let mut result = 0; + + if let Some(root) = root { + Self::dfs_sum(&root, 0, &mut result); + } + + + result + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_129() { + } +}