From db6635d09fcb3e8dcfafadb018248519cb15206e Mon Sep 17 00:00:00 2001 From: fartem Date: Sat, 11 Feb 2023 16:04:50 +0300 Subject: [PATCH] 2023-02-11 update: added "100. Same Tree" --- README.md | 1 + lib/easy/symmetric_tree.dart | 15 +++++++++ test/easy/symmetric_tree_test.dart | 54 ++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 lib/easy/symmetric_tree.dart create mode 100644 test/easy/symmetric_tree_test.dart diff --git a/README.md b/README.md index f2045be..425a2c8 100644 --- a/README.md +++ b/README.md @@ -31,3 +31,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 88. Merge Sorted Array | [Link](https://leetcode.com/problems/merge-sorted-array/) | [Link](./lib/easy/merge_sorted_array.dart) | | 94. Binary Tree Inorder Traversal | [Link](https://leetcode.com/problems/binary-tree-inorder-traversal/) | [Link](./lib/easy/binary_tree_inorder_traversal.dart) | | 100. Same Tree | [Link](https://leetcode.com/problems/same-tree/) | [Link](./lib/easy/same_tree.dart) | +| 101. Symmetric Tree | [Link](https://leetcode.com/problems/symmetric-tree/) | [Link](./lib/easy/symmetric_tree.dart) | diff --git a/lib/easy/symmetric_tree.dart b/lib/easy/symmetric_tree.dart new file mode 100644 index 0000000..618b234 --- /dev/null +++ b/lib/easy/symmetric_tree.dart @@ -0,0 +1,15 @@ +// https://leetcode.com/problems/symmetric-tree/ +import '../common/tree_node.dart'; + +class Solution { + bool isSymmetric(TreeNode? root) { + return _isMirror(root?.left, root?.right); + } + + bool _isMirror(TreeNode? l, TreeNode? r) { + if (l != null && r != null && l.val == r.val) { + return _isMirror(l.left, r.right) && _isMirror(l.right, r.left); + } + return l == null && r == null; + } +} diff --git a/test/easy/symmetric_tree_test.dart b/test/easy/symmetric_tree_test.dart new file mode 100644 index 0000000..9fecdf2 --- /dev/null +++ b/test/easy/symmetric_tree_test.dart @@ -0,0 +1,54 @@ +import 'package:leetcode_dart/common/tree_node.dart'; +import 'package:leetcode_dart/easy/symmetric_tree.dart'; +import 'package:test/test.dart'; + +void main() { + group( + 'Example tests', + () { + final st = Solution(); + test( + 'true', + () => expect( + true, + st.isSymmetric( + TreeNode( + 1, + TreeNode( + 2, + TreeNode(3), + TreeNode(4), + ), + TreeNode( + 2, + TreeNode(4), + TreeNode(3), + ), + ), + ), + ), + ); + test( + 'false', + () => expect( + false, + st.isSymmetric( + TreeNode( + 1, + TreeNode( + 2, + null, + TreeNode(3), + ), + TreeNode( + 2, + null, + TreeNode(3), + ), + ), + ), + ), + ); + }, + ); +}