@@ -190,6 +190,95 @@ public:
190
190
191
191
```
192
192
193
+ ### **TypeScript**
194
+
195
+ ```ts
196
+ /**
197
+ * Definition for a binary tree node.
198
+ * class TreeNode {
199
+ * val: number
200
+ * left: TreeNode | null
201
+ * right: TreeNode | null
202
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
203
+ * this.val = (val===undefined ? 0 : val)
204
+ * this.left = (left===undefined ? null : left)
205
+ * this.right = (right===undefined ? null : right)
206
+ * }
207
+ * }
208
+ */
209
+
210
+ function isSymmetric(root: TreeNode | null): boolean {
211
+ if (root == null) {
212
+ return true;
213
+ }
214
+ const dfs = (l: TreeNode | null, r: TreeNode | null) => {
215
+ if (l == null && r == null) {
216
+ return true;
217
+ }
218
+ if (l == null || r == null) {
219
+ return false;
220
+ }
221
+ return (
222
+ l.val == r.val &&
223
+ dfs(l.left, r.right) &&
224
+ dfs(l.right, r.left) &&
225
+ true
226
+ );
227
+ };
228
+ return dfs(root.left, root.right);
229
+ }
230
+ ```
231
+
232
+ ### ** Rust**
233
+
234
+ ``` rust
235
+ // Definition for a binary tree node.
236
+ // #[derive(Debug, PartialEq, Eq)]
237
+ // pub struct TreeNode {
238
+ // pub val: i32,
239
+ // pub left: Option<Rc<RefCell<TreeNode>>>,
240
+ // pub right: Option<Rc<RefCell<TreeNode>>>,
241
+ // }
242
+ //
243
+ // impl TreeNode {
244
+ // #[inline]
245
+ // pub fn new(val: i32) -> Self {
246
+ // TreeNode {
247
+ // val,
248
+ // left: None,
249
+ // right: None
250
+ // }
251
+ // }
252
+ // }
253
+ use std :: cell :: RefCell ;
254
+ use std :: rc :: Rc ;
255
+ impl Solution {
256
+ pub fn is_symmetric (root : Option <Rc <RefCell <TreeNode >>>) -> bool {
257
+ match root {
258
+ None => true ,
259
+ Some (root ) => {
260
+ fn dfs (
261
+ l : & Option <Rc <RefCell <TreeNode >>>,
262
+ r : & Option <Rc <RefCell <TreeNode >>>,
263
+ ) -> bool {
264
+ if l . is_none () && r . is_none () {
265
+ return true ;
266
+ }
267
+ if l . is_none () || r . is_none () {
268
+ return false ;
269
+ }
270
+ let l = l . as_ref (). unwrap (). borrow ();
271
+ let r = r . as_ref (). unwrap (). borrow ();
272
+ l . val == r . val && dfs (& l . left, & r . right) && dfs (& l . right, & r . left) && true
273
+ }
274
+ let node = root . borrow ();
275
+ dfs (& node . left, & node . right)
276
+ }
277
+ }
278
+ }
279
+ }
280
+
281
+ ```
193
282
### ** ...**
194
283
195
284
```
0 commit comments