<prompt> Tengeneza algoriti ya kusimba mti wa N-ary kuwa mti wa jozi na usimbue mti wa jozi ili kupata mti asili wa N-ary. Mti wa N-ary ni mti wenye mizizi ambayo kila nodi haina watoto zaidi ya N. Vile vile, mti wa binary ni mti wenye mizizi ambayo kila nodi haina zaidi ya watoto 2. Hakuna kizuizi juu ya jinsi algorithm yako ya kusimbakusimbua inapaswa kufanya kazi. Unahitaji tu kuhakikisha kuwa mti wa N-ary unaweza kusimbwa kwa mti wa binary na mti huu wa binary unaweza kuamuliwa kwa muundo asili wa mti wa N-nary._Usawazishaji wa ingizo la Nary-Tree unawakilishwa katika mpangilio wao wa ngazi, kila kikundi cha watoto kinatenganishwa na thamani isiyofaa Angalia mfano ufuatao._Kwa mfano, unaweza kusimba mti ufuatao wa 3-ary kwa mti wa binary kwa njia hii:Ingizo: mzizi 1,null,3,2,4,null,5,6Kumbuka kuwa yaliyo hapo juu ni mfano tu ambao _unaweza au hauwezi_ kufanya kazi. Si lazima ufuate umbizo hili, kwa hivyo tafadhali kuwa mbunifu na uje na mbinu tofauti wewe mwenyewe.Mfano wa 1:Ingizo: mzizi 1,null,3,2,4,null,5,6Pato: 1,null,3,2,4,null,5,6Mfano wa 2:Ingizo: mzizi 1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12, null,13,null,null,14Pato: 1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null, 13,null,null,14Mfano wa 3:Ingizo: mzizi Pato: Vikwazo: Idadi ya nodi kwenye mti iko katika safu 0, 104. 0 Node.val 104 Urefu wa mti wa n-ary ni chini ya au sawa na 1000 Usitumie vigezo vya washiriki wa darasakimataifatuli kuhifadhi hali. Algorithms zako za kusimba na kusimbua zinapaswa kuwa zisizo na uraia.  <response>: chatudarasa la NaryTreeNode: def __init__binafsi, valHakuna, watotoHakuna: self.val val self.children watoto kama watoto sio Hakuna mwingine darasa la BinaryTreeNode: def __init__ubinafsi, valHakuna, kushotoHakuna, kuliaHakuna: self.val val self.left kushoto self.right hakidef encodemizizi: NaryTreeNode - BinaryTreeNode: ikiwa sio mizizi: kurudi Hakuna binary_root BinaryTreeNoderoot.val kama mzizi.watoto: binary_root.left encoderoot.children0 ndugu binary_root.left kwa mtoto katika mizizi.children1:: sibling.right encodemtoto ndugu ndugu.haki rudisha binary_rootdef decodemizizi: BinaryTreeNode - NaryTreeNode: ikiwa sio mizizi: kurudi Hakuna nary_root NaryTreeNoderoot.val ndugu mzizi.kushoto huku ndugu: nary_root.children.appendsimbuandugu ndugu ndugu.haki kurudi nary_rootmaelezoIli kusimba mti uliopewa wa N-ary kuwa mti wa binary kwa kujirudia, tunafanya hatua zifuatazo:1. Kwa kila nodi ya mti wa N-ary, tengeneza nodi ya mti wa binary inayolingana na thamani sawa.2. Hifadhi mtoto wa kwanza wa nodi ya mti wa N-ary kama mtoto wa kushoto wa nodi ya mti wa binary.3. Rudia kupitia watoto waliosalia kwenye nodi ya mti wa N-ary, ukiweka kila mtoto upande wa kulia wa mtoto wa kwanza wa nodi ya mti wa binary. Kwa maneno mengine, tunawakilisha ndugu wa mti wa N-ary kama watoto wanaofaa kwenye mti wa binary.4. Tunarudia utaratibu huu mpaka kila node katika mti uliopewa wa N-ary imesindika.Kwa kusimbua mti wa binary kurudi kwa mti wa N-ary, tunabadilisha mchakato unaofuatwa wa usimbaji. Tunapovuka mti wa binary, tunaunda nodi mpya ya mti wa N-ary yenye thamani sawa, kupata watoto wake kutoka kwa mtoto wa kushoto na watoto wake wanaofuata wa kulia wa nodi ya mti wa binary.Kumbuka, katika visa vyote viwili, tunarudia mchakato kwa kila nodi kwenye mti asilia.Algoriti zilizo hapo juu zinaonyeshwa katika C, Java, Python, na JavaScript. 