Member-only story

Mirror Tree [Swift]

Prafulla Singh
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))

--

--

Prafulla Singh
Prafulla Singh

No responses yet