File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ * Recursive solution
3+ */
4+ class Solution {
5+ fun isSymmetric (root : TreeNode ? ): Boolean {
6+
7+ fun dfs (left : TreeNode ? , right : TreeNode ? ): Boolean {
8+ if (left == null && right == null )
9+ return true
10+ if (left == null || right == null )
11+ return false
12+
13+ return left.value == right.value &&
14+ dfs(left.left, right.right) &&
15+ dfs(left.right, right.left)
16+ }
17+
18+ return dfs(root!! .left, root!! .right)
19+ }
20+
21+ val TreeNode .value get()= this .`val `
22+ }
23+
24+ /*
25+ * Iterative solution
26+ */
27+ class Solution {
28+ fun isSymmetric (root : TreeNode ? ): Boolean {
29+ val q = LinkedList <TreeNode ?>()
30+ q.addFirst(root!! .left)
31+ q.addFirst(root!! .right)
32+
33+ while (q.isNotEmpty()) {
34+ val left = q.removeFirst()
35+ val right = q.removeFirst()
36+
37+ if (left == null && right == null )
38+ continue
39+
40+ if (left == null || right == null || left.value != right.value)
41+ return false
42+
43+ q.addFirst(left.left)
44+ q.addFirst(right.right)
45+ q.addFirst(left.right)
46+ q.addFirst(right.left)
47+ }
48+
49+ return true
50+ }
51+
52+ val TreeNode .value get()= this .`val `
53+ }
You can’t perform that action at this time.
0 commit comments