<prompt> Andika algorithm ya kutekeleza mti wa utaftaji wa binary.  <response>: 1. Bainisha darasa la Njia ambalo litawakilisha nodi kwenye mti, yenye sifa kushoto, kulia na thamani ya kuhifadhi watoto na thamani ya nodi, mtawalia. Njia ya darasa la chatu: def __init__binafsi, data: self.left None self.right None self.value data 2. Bainisha darasa la BinarySearchTree ambalo litakuwa na nodi ya mizizi ya mti. , na njia za kuingiza nodi, kutafuta nodi, na kuvuka mti. python class BinarySearchTree: def __init__self: self.root None 3. Tekeleza mbinu ya ingiza kwa kuanzia kwenye nodi ya mzizi, na urudishe chini mti kwa kulinganisha thamani mpya na nodi ya sasa. na kusonga kushoto ikiwa thamani mpya ni ndogo au kulia ikiwa thamani mpya ni kubwa hadi eneo tupu lipatikane. Kisha, ingiza nodi mpya kwenye sehemu tupu. python def insertself, data: new_node Nodidata ikiwa self.root ni Hakuna: self.root new_node return current_node self.root huku current_nodi: ikiwa data current_node.value: if current_node.left is None: current_node.left new_nodi return else: current_nodi current_node.left else: if current_node.right is No: current_node.right new_nodi return: current_nodi current_nodi.kulia 4. Tekeleza search mbinu ambayo huchukua thamani kama ingizo na kurejesha Kweli ikiwa thamani iko kwenye mti, na Sivyo vinginevyo. Sawa na mbinu ya kuingiza, mbinu huanza kutoka kwa nodi ya mizizi na kurudia chini ya mti kwa kulinganisha thamani ya utafutaji na nodi ya sasa na kusonga kushoto au kulia hadi thamani ipatikane au mwisho wa mti ufikiwe. python def searchself, data: current_node self.root while current_node: if data current_node.value: rudisha data ya kweli ya elif current_node.value: current_node current_node.left else: current_node current_node.right return Siyo 5. Tekeleza mbinu za kupitisha, kama vile kuagiza, kuagiza mapema, na agizo la awali, ambazo hutembelea nodi kwa mpangilio maalum. 