সমস্যা বিবরণ
একটি বাইনারি ট্রি দেওয়া আছে। রুট লেভেল ১ (অড লেভেল), রুটের লেফট/রাইট চাইল্ড লেভেল ২ (ইভেন লেভেল) এবং এভাবেই ক্রমাগত। অড লেভেল এবং ইভেন লেভেলে থাকা নোডগুলোর যোগফলের পার্থক্য বের করতে হবে।
উদাহরণ
5
/ \
2 6
/ \ \
1 4 8
/ / \
3 7 9
Sum of nodes at odd level = 5 + 1 + 4 + 8 = 18
Sum of nodes at even level = 2 + 6 + 3 + 7 + 9 = 27
Difference = -9
সমাধান
Recursive Traversal ব্যবহার করা হয়েছে। ট্র্যাভার্সালের সময় রুট নোড এবং এর লেফট ও রাইট চাইল্ডের পার্থক্য রিটার্ন করা হয়।
জাভা প্রোগ্রাম উদাহরণ
class Node {
int data;
Node left, right;
Node(int data){
this.data = data;
this.left = this.right = null;
}
}
public class JavaTester {
public static Node getTree(){
Node root = new Node(5);
root.left = new Node(2);
root.right = new Node(6);
root.left.left = new Node(1);
root.left.right = new Node(4);
root.left.right.left = new Node(3);
root.right.right = new Node(8);
root.right.right.right = new Node(9);
root.right.right.left = new Node(7);
return root;
}
public static int difference(Node node){
if(node == null) return 0;
return node.data - difference(node.left) - difference(node.right);
}
public static void main(String args[]){
Node tree = getTree();
System.out.println(difference(tree));
}
}
আউটপুট
-9