<prompt> Kwa kuzingatia mzizi wa mti wa binary, kusanya nodi za mti kana kwamba unafanya hivi: Kusanya nodi zote za majani. Ondoa nodi zote za majani. Rudia hadi mti uwe tupu.Mfano wa 1:Ingizo: mzizi 1,2,3,4,5Pato: 4,5,3,2,1Ufafanuzi:3,5,4,2,1 na 3,4,5,2,1 pia huchukuliwa kuwa majibu sahihi kwani kwa kila ngazi haijalishi mpangilio ambao vipengele vinarejeshwa.Mfano wa 2:Ingizo: mzizi 1Pato: 1Vikwazo: Idadi ya nodi kwenye mti iko katika safu 1, 100. -100 Node.val 100  <response>: chatudarasa TreeNode: def __init__binafsi, val0, leftNone, rightNone: self.val val self.left kushoto self.right hakidef find_leavesnodi, matokeo, kiwango: ikiwa sio nodi: kurudi -1 left_level find_leaves nodi.left, tokeo, kiwango 1 right_level find_leaves node.right, tokeo, kiwango 1 kiwango maxkiwango_cha_kushoto, kiwango_cha_kulia 1 ikiwa lenmatokeo kiwango: tokeo.ongeza tokeolevel.ongezanode.val kiwango cha kurudidef findLeavesmizizi: matokeo kupata_majanimizizi, matokeo, 0 matokeo ya kurudimaelezoKanuni hutumia mbinu ya Utafutaji wa Kina-Kwanza DFS ili kupata majani katika kiwango sawa. Kanuni hutumia kitendakazi cha kisaidizi cha findLeaves ili kuvuka mti kwa kujirudia.Katika kila simu inayojirudia, nodi ya sasa inaangaliwa kwa kuwa nodi ya majani watoto wa kushoto na kulia ni batili. Ikiwa node ya sasa ni jani, thamani yake imeongezwa kwa kiwango cha sambamba cha vector ya matokeo. Ikiwa sivyo, kurudia kunaendelea kwa watoto wa kushoto na wa kulia. Tofauti ya kiwango huhifadhi kiwango cha sasa cha nodi ya jani.Chaguo za kukokotoa za findLeaves hufanya kazi mradi tu kuna nodi zilizosalia kwenye mti. Mara tu nodi zote za majani zimekusanywa na kuondolewa, vekta ya matokeo ina pato linalohitajika. 