এটি আরও ভাল উপায়ে সমাধান করা যেতে পারে। এছাড়াও, আমরা ডেটা কাঠামোয় সামান্য পরিবর্তন এবং পুনরাবৃত্ত পদ্ধতির সাহায্যে ও (এন) এর সময়ের জটিলতা হ্রাস করতে পারি। বিভিন্ন বিশ্লেষণ এবং বিভিন্ন ডেটা স্ট্রাকচার সহ এই সমস্যাটি সমাধানের একাধিক উপায়ে।
আমার একটি ব্লগ পোস্টে আমি কী ব্যাখ্যা করতে চাই তার একটি সংক্ষিপ্তসার এখানে :
রিকার্সিভ অ্যাপ্রোচ - ট্রি ব্যাস
এই সমস্যাটির কাছে যাওয়ার আরও একটি উপায় নিম্নরূপ। যেমনটি আমরা উপরে উল্লেখ করেছি যে ব্যাস পারে
- সম্পূর্ণরূপে বাম উপ গাছ বা শায়িত
- পুরোপুরি ডান সাব ট্রি বা শায়িত
- মূল জুড়ে বিস্তৃত হতে পারে
যার অর্থ ব্যাসটি আদর্শভাবে উদ্ভূত হতে পারে
- বাম গাছের ব্যাস বা
- ডান গাছের ব্যাস বা
- বাম সাব গাছের উচ্চতা + ডান সাব গাছের উচ্চতা + 1 (1 ব্যাস মূল নোড জুড়ে বিস্তৃত হয় যখন রুট নোড যোগ করতে)
এবং আমরা জানি যে ব্যাসটি দীর্ঘতম পাথ, সুতরাং আমরা এটি সর্বাধিক 1 এবং 2 নিতে পারি যদি এটি উভয় দিকের মধ্যে থাকে তবে যদি তা মূলের মধ্য দিয়ে প্রসারিত হয় তবে 3 বা তুষারক্ষণ নিতে হবে।
Iterative পদ্ধতির - গাছ ব্যাস
আমাদের একটি গাছ রয়েছে, প্রতিটি নোডের সাথে আমাদের একটি মেটা তথ্য প্রয়োজন যাতে প্রতিটি নোড নিম্নলিখিত জানেন:
- তার বাম সন্তানের উচ্চতা,
- তার ডান সন্তানের উচ্চতা এবং
- এর পাতার নোডের মধ্যে সবচেয়ে দূরত্ব।
প্রতিটি নোডের এই তথ্যটি একবার হয়ে গেলে, সর্বাধিক পাথের খোঁজ রাখতে আমাদের একটি অস্থায়ী পরিবর্তনশীল প্রয়োজন। অ্যালগরিদম শেষ হওয়ার সাথে সাথে আমাদের অস্থায়ী ভেরিয়েবলের ব্যাসের মান হয়।
এখন, আমাদের এই সমস্যাটি একটি ডাউন আপ পদ্ধতির মধ্যে সমাধান করা দরকার, কারণ মূলের তিনটি মান সম্পর্কে আমাদের ধারণা নেই। তবে আমরা পাতার জন্য এই মানগুলি জানি।
সমাধানের পদক্ষেপ
- বাম হাইট এবং ডানহাইট হিসাবে সমস্ত পাতাগুলি 1 হিসাবে শুরু করুন।
- সমস্ত পাতাকে সর্বাধিক দূরত্বে 0 হিসাবে শুরু করুন, আমরা এটিকে একটি বিন্দুতে পরিণত করি যে যদি বাম দিকের উচ্চতা বা ডানদিকে উচ্চতা 1 হয় তবে আমরা সর্বোচ্চ দূরত্ব = 0 করি
- একবারে একজনের উপরে উঠুন এবং তাত্ক্ষণিক পিতামাতার জন্য মানগুলি গণনা করুন। এটি সহজ হবে কারণ এখন আমরা বাচ্চাদের জন্য এই মানগুলি জানি।
প্রদত্ত নোডে,
- বামহাইটটিকে সর্বোচ্চ হিসাবে (তার বাম সন্তানের বাম হাইট বা ডানহাইট) অর্পণ করুন।
- সর্বাধিক হিসাবে ডান হাইট নিয়োগ করুন (তার ডান সন্তানের বামহাইট বা ডান হাইট)।
- যদি এই মানগুলির কোনও (বাম হাইট বা ডান হাইট) হয় তবে 1টি সর্বোচ্চ দূরত্বকে শূন্য হিসাবে তৈরি করে।
- যদি দুটি মানই শূন্যের চেয়ে বেশি হয় তবে বামহাইট + ডান হাইট - 1 হিসাবে সর্বোচ্চ দূরত্ব তৈরি করে make
- কোনও অস্থায়ী ভেরিয়েবেলে সর্বোচ্চ দূরত্ব বজায় রাখুন এবং চতুর্থ ধাপে সর্বোচ্চতমটি চলকের বর্তমান মানের চেয়ে বেশি হলে, এটি নতুন সর্বোচ্চ দূরত্ব মান দিয়ে প্রতিস্থাপন করুন।
- অ্যালগরিদমের শেষে সর্বাধিক দূরত্বের মান ব্যাস হয়।