কম্পিউটার

পাইথন ব্যবহার করে দুটি এক্সপ্রেশন ট্রি সমতুল্য কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন, আমাদের দুটি এক্সপ্রেশন ট্রি দেওয়া হয়েছে। আমাদের একটি প্রোগ্রাম লিখতে হবে যা দুটি এক্সপ্রেশন ট্রি পরীক্ষা করে এবং এক্সপ্রেশন ট্রি একই মান তৈরি করে কিনা তা নির্ধারণ করে। দুটি এক্সপ্রেশন ট্রি আমাদেরকে একটি ক্রমানুসারে প্রদান করা হয় এবং আমরা একটি সত্য মান ফেরত দিই যদি সেগুলি মিলে যায়, অন্যথায় আমরা একটি মিথ্যা মান ফেরত দিই৷

সুতরাং, যদি ইনপুট মত হয়

পাইথন ব্যবহার করে দুটি এক্সপ্রেশন ট্রি সমতুল্য কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম

তাহলে আউটপুট হবে True।

দুটি এক্সপ্রেশন ট্রি একই মানের মূল্যায়ন করে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • একটি ফাংশন dfs() সংজ্ঞায়িত করুন। এটি নোড, dic

    নেবে
    • যদি নোড খালি থাকে, তাহলে

      • ফেরত

    • যদি নোডের বাম এবং নোডের ডানদিকে খালি না হয়, তাহলে

      • dic[নোডের মান] :=dic[নোডের মান] + 1

    • dfs(নোডের বামে, dic)

    • dfs(নোডের ডানদিকে, dic)

  • dic1 :=পূর্ণসংখ্যার মান সম্বলিত একটি নতুন মানচিত্র

  • dic2 :=পূর্ণসংখ্যার মান সম্বলিত একটি নতুন মানচিত্র

  • dfs(root1, dic1)

  • dfs(root2, dic2)

  • রিটার্ন True যদি dic1 dic2 এর মত হয়।


উদাহরণ

ইমপোর্ট কালেকশন ক্লাস ট্রিনোড:def __init__(self, val=0, left=None, right=None):self.val =val self.left =left self.right =rightdef insert(temp,data):que =[ ] que.append(temp) while (len(que)):temp =que[0] que.pop(0) if (temp.left নয়):যদি ডেটা না হয়:temp.left =TreeNode(data) else :temp.left =TreeNode(0) break else:que.append(temp.left) if (not temp.right):if data is not None:temp.right =TreeNode(data) else:temp.right =TreeNode( 0) break else:que.append(temp.right)def make_tree(elements):Tree =TreeNode(elements[0]):উপাদানে উপাদানের জন্য[1:]:insert(Tree, element) return Treedef solve(root1, root2) ):dic1 =collections.defaultdict(int) dic2 =collections.defaultdict(int) def dfs(নোড, dic):যদি নোড না হয়:রিটার্ন না হলে node.left এবং node.right না হলে:dic[নোড .val] +=1 dfs(node.left, dic) dfs(node.right, dic) dfs(root1, dic1) dfs(root2, dic2) রিটার্ন dic1 ==dic2root1 =make_tree([1, '+', 2) , '*', 3, '+', 4 ])root2 =make_tree([2, '+', 1, '*', 4, '+', 3])print(solve(root1, root2)) 

ইনপুট

root1 =make_tree([1, '+', 2, '*', 3, '+', 4 ])root2 =make_tree([2, '+', 1, '*', 4, '+ ', 3])

আউটপুট

সত্য

  1. পাইথন ব্যবহার করে একটি বাইনারি গাছের সর্বনিম্ন সাধারণ পূর্বপুরুষ খুঁজে বের করার প্রোগ্রাম

  2. পাইথন ব্যবহার করে দুটি এক্সপ্রেশন ট্রি সমতুল্য কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম

  3. পাইথন ব্যবহার করে বাইনারি ট্রিতে ডানদিকে নোড খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথন প্রোগ্রাম কত কিউব কাটা হয় তা খুঁজে বের করতে