Overview
What You’ll Learn
Symmetric Tree is an “Easy” tagged Leetcode problem. The problem states “Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).”
First I will show you the problem statement, examples and constraints given.
Also, check out this video tutorial on implementing these solutions:
Brainstorm: Breadth-first search
We can have a queue to check if the root’s left and right children are identical. These are the steps we can take to arrive at our solution:
-
Create a queue and add the root twice to the queue.
-
As long as there is a TreeNodes in the queue, we will take two TreeNodes.
-
If they are both null, we have arrived at null leaf nodes, so continue.
-
Next, if either node is null, we will return false since we already are checking if both are null beforehand. This is similar to the given Example 2
-
Lastly, we also need to check if the values are the same. Of course, if the values are not the same, they are not symmetric.
-
We will add each of the two current nodes opposite nodes to the queue.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution {
fun isSymmetric(root: TreeNode?): Boolean {
val queue = LinkedList<TreeNode?>()
queue.offer(root)
queue.offer(root)
while( queue.isNotEmpty() ){
val one = queue.poll()
val two = queue.poll()
if(one == null && two == null) continue
if(one == null || two == null) return false
if(one?.`val` != two?.`val`) return false
queue.offer(one.left)
queue.offer(two.right)
queue.offer(two.left)
queue.offer(one.right)
}
return true
}
}
Congratulations
Congratulations, we have went through a couple of ways to solve Leetcode - Symmetric Tree (Kotlin)!
Also, check out the video tutorial on implementing these solutions: