
Leetcode: Symmetric Tree (Kotlin)
Leetcode: Symmetric Tree (Kotlin)
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).”
They give us two examples:
Brainstorming:
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.
Solution
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
}
}
Thank you for taking time out of your day to read this article!