Member-only story
Mirror Tree [Swift]
1 min readFeb 15, 2020
Given two binary tree T1 and T2. Write a function to validate if trees are mirror to each other.
Example
T1: T2 1 1
2 3 3 2
4 5 6 7 7 6 5 4
For two tree T1 and T2 to be mirror. Their root node key must me same. and the left sub-tree of T1 and right sub-tree of T2 should be mirror and vice versa.
class Node {
init(item: Int) {
self.item = item
left = nil
right = nil
}
var item : Int
var left: Node?
var right: Node?
}
func isMirror(head1: Node?, head2: Node?) -> Bool {
if (head1 == nil) && (head2 == nil) {
return true
}
if (head1 == nil) || (head2 == nil) {
return false
}
return (head1?.item == head2?.item) &&
isMirror(head1: head1?.left, head2: head2?.right) &&
isMirror(head1: head1?.right, head2: head2?.left)
}
//
var a: Node = Node(item: 1)
a.left = Node(item: 2)
a.right = Node(item: 3)
a.left?.left = Node(item: 4)
a.left?.right = Node(item: 5)
var b: Node = Node(item: 1)
b.left = Node(item: 3)
b.right = Node(item: 2)
b.right?.right = Node(item: 4)
b.right?.left = Node(item: 5)
print(isMirror(head1: a, head2: b))