@@ -110,6 +110,102 @@ class Solution {
110
110
}
111
111
```
112
112
113
+ ### ** TypeScript**
114
+
115
+ ``` ts
116
+ /**
117
+ * Definition for a binary tree node.
118
+ * class TreeNode {
119
+ * val: number
120
+ * left: TreeNode | null
121
+ * right: TreeNode | null
122
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
123
+ * this.val = (val===undefined ? 0 : val)
124
+ * this.left = (left===undefined ? null : left)
125
+ * this.right = (right===undefined ? null : right)
126
+ * }
127
+ * }
128
+ */
129
+
130
+ function dfs(root : TreeNode | null , sum : number ): number {
131
+ let res = 0 ;
132
+ if (root == null ) {
133
+ return res ;
134
+ }
135
+ sum -= root .val ;
136
+ if (sum === 0 ) {
137
+ res ++ ;
138
+ }
139
+ return res + dfs (root .left , sum ) + dfs (root .right , sum );
140
+ }
141
+
142
+ function pathSum(root : TreeNode | null , sum : number ): number {
143
+ if (root == null ) {
144
+ return 0 ;
145
+ }
146
+ return dfs (root , sum ) + pathSum (root .left , sum ) + pathSum (root .right , sum );
147
+ }
148
+ ```
149
+
150
+ ### ** Rust**
151
+
152
+ ``` rust
153
+ // Definition for a binary tree node.
154
+ // #[derive(Debug, PartialEq, Eq)]
155
+ // pub struct TreeNode {
156
+ // pub val: i32,
157
+ // pub left: Option<Rc<RefCell<TreeNode>>>,
158
+ // pub right: Option<Rc<RefCell<TreeNode>>>,
159
+ // }
160
+ //
161
+ // impl TreeNode {
162
+ // #[inline]
163
+ // pub fn new(val: i32) -> Self {
164
+ // TreeNode {
165
+ // val,
166
+ // left: None,
167
+ // right: None
168
+ // }
169
+ // }
170
+ // }
171
+ use std :: rc :: Rc ;
172
+ use std :: cell :: RefCell ;
173
+ use std :: collections :: VecDeque ;
174
+ impl Solution {
175
+ fn dfs (root : & Option <Rc <RefCell <TreeNode >>>, mut sum : i32 ) -> i32 {
176
+ let mut res = 0 ;
177
+ if root . is_none () {
178
+ return res ;
179
+ }
180
+ let root = root . as_ref (). unwrap (). borrow ();
181
+ sum -= root . val;
182
+ if sum == 0 {
183
+ res += 1 ;
184
+ }
185
+ res + Self :: dfs (& root . left, sum ) + Self :: dfs (& root . right, sum )
186
+ }
187
+
188
+ pub fn path_sum (root : Option <Rc <RefCell <TreeNode >>>, sum : i32 ) -> i32 {
189
+ let mut queue = VecDeque :: new ();
190
+ if root . is_some () {
191
+ queue . push_back (root );
192
+ }
193
+ let mut res = 0 ;
194
+ while let Some (mut root ) = queue . pop_front () {
195
+ res += Self :: dfs (& root , sum );
196
+ let mut root = root . as_mut (). unwrap (). borrow_mut ();
197
+ if root . left. is_some () {
198
+ queue . push_back (root . left. take ());
199
+ }
200
+ if root . right. is_some () {
201
+ queue . push_back (root . right. take ());
202
+ }
203
+ }
204
+ res
205
+ }
206
+ }
207
+ ```
208
+
113
209
### ** ...**
114
210
115
211
```
0 commit comments