সমস্যা বিবৃতি
একটি প্রদত্ত বাইনারি ট্রি দিয়ে, বিজোড় স্তর এবং জোড় স্তরে নোডের যোগফলের মধ্যে পার্থক্য খুঁজে বের করার জন্য একটি প্রোগ্রাম লিখুন। লেভেল 1-এ রুট ধরুন, লেভেল 2-এ রুটের বাম/ডান সন্তান এবং আরও অনেক কিছু।
উদাহরণ
5 / \ 2 6 / \ \ 1 4 8 / / \ 3 7 9বিজোড় স্তরে নোডের যোগফল=5 + 1 + 4 + 8=18 জোড় স্তরে নোডের যোগফল=2 + 6 + 3 + 7 + 9 =27 পার্থক্য =-9।
সমাধান
রিকার্সিভ ট্রাভার্সাল ব্যবহার করুন। ট্রাভার্সালের সময়, রুট নোড এবং এর বাম এবং ডান চাইল্ডের পার্থক্য ফিরিয়ে দিন।
উদাহরণ
প্রয়োজনীয় আউটপুট খুঁজে পেতে জাভাতে প্রোগ্রামটি নিম্নরূপ।
<প্রি>ক্লাস নোড { int ডেটা; নোড বাম, ডান; নোড(int data){ this.data =data; this.left =this.right =null; }} পাবলিক ক্লাস জাভা টেস্টার { পাবলিক স্ট্যাটিক নোড getTree(){ Node root =new Node(5); root.left =নতুন নোড(2); root.right =নতুন নোড(6); root.left.left =নতুন নোড(1); root.left.right =নতুন নোড(4); root.left.right.left =নতুন নোড(3); root.right.right =নতুন নোড(8); root.right.right.right =নতুন নোড(9); root.right.right.left =নতুন নোড(7); রিটার্ন রুট; } পাবলিক স্ট্যাটিক int পার্থক্য(নোড নোড){ if(node ==null) রিটার্ন 0; রিটার্ন node.data - পার্থক্য(node.left) - পার্থক্য(node.right); } পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং আর্গস[]){ নোড ট্রি =getTree(); System.out.println(পার্থক্য(বৃক্ষ)); }}আউটপুট
-9