using
System;
using
System.Collections.Generic;
public
class
BinaryTree
{
public
Node root;
public
class
Node
{
public
int
val;
public
Node left, right;
public
Node(
int
v)
{
val = v;
left =
null
;
right =
null
;
}
}
BinaryTree(Node r) { root = r; }
BinaryTree() { }
public
bool
isSymmetric(Node root)
{
Queue<Node> q =
new
Queue<Node>();
q.Enqueue(root.left);
q.Enqueue(root.right);
while
(q.Count!=0)
{
Node tempLeft = q.Dequeue();
Node tempRight = q.Dequeue();
if
(tempLeft==
null
&& tempRight==
null
)
continue
;
if
((tempLeft==
null
&& tempRight!=
null
) ||
(tempLeft!=
null
&& tempRight==
null
))
return
false
;
if
(tempLeft.val != tempRight.val)
return
false
;
q.Enqueue(tempLeft.left);
q.Enqueue(tempRight.right);
q.Enqueue(tempLeft.right);
q.Enqueue(tempRight.left);
}
return
true
;
}
public
static
void
Main(String[] args)
{
Node n =
new
Node(1);
BinaryTree bt =
new
BinaryTree(n);
bt.root.left =
new
Node(2);
bt.root.right =
new
Node(2);
bt.root.left.left =
new
Node(3);
bt.root.left.right =
new
Node(4);
bt.root.right.left =
new
Node(4);
bt.root.right.right =
new
Node(3);
if
(bt.isSymmetric(bt.root))
Console.WriteLine(
"The given tree is Symmetric"
);
else
Console.WriteLine(
"The given tree is not Symmetric"
);
}
}