রিকার্শিভ অ্যাপ্রোচে ট্রি সিমেট্রিক কিনা খুঁজে বের করতে, আমরা প্রথমে চেক করি ট্রি null কিনা, যদি ট্রি null হয় তবে এটি সিমেট্রিক। যদি ট্রি null না হয়, তবে isSymmetricMirror মেথড কল করি। isSymmetricMirror-এ left চাইল্ড এবং right চাইল্ডের মান পাই। যদি left এবং right উভয় null হয় তবে সিমেট্রিক বলে মনে করি, যদি যেকোনো একটি null হয় তবে সিমেট্রিক নয় বলে মনে করি এবং শেষে isSymmetric মেথডটি রিকার্শিভলি কল করি left এবং right চাইল্ড ভ্যালু পাস করে।
উদাহরণ
public class TreesPgm
{
public class Node
{
public int Value;
public Node LeftChild;
public Node RightChild;
public Node(int value)
{
this.Value = value;
}
public override String ToString()
{
return "Node=" + Value;
}
}
public bool IsSymmetricRecursive(Node node)
{
if (node == null)
{
return true;
}
return IsSymmetricMirror(node.LeftChild, node.RightChild);
}
private bool IsSymmetricMirror(Node node1, Node node2)
{
if (node1 == null && node2 == null)
{
return true;
}
if (node1 == null || node2 == null)
{
return false;
}
if (node1.Value != node2.Value)
{
return false;
}
return IsSymmetricMirror(node1.LeftChild, node2.RightChild) && IsSymmetricMirror(node2.LeftChild, node1.RightChild);
}
}
আউটপুট
1
2 2
3 4 4 3 True