Vi trenger å besøke alle bladnoder og finne ut hvor dypt de er. Dette tyder på:
Gi node-besøk funksjonen et ekstra argument. Den trenger å vite ikke bare hvor det kommer, men også hvor dypt det er. Hver gang det heter, det heter på å gå dypere, slik at node besøkende har bare å øke dybden nummeret det fikk fra den som ringer.
Nå er en av 2 ting kan skje:
Enten noden du funnet er en bladnode, dvs. det ikke har noen barn; i dette tilfellet, må de besøkende til å returnere sin dybde til den som ringer. Ja, det bare returnerer antall det fikk fra den som ringer, + 1.
eller det ikke er en bladnode. I så fall vil det ha enten 1 eller 2 barn. Vi trenger å få disse detaljerte rapporter fra våre barn tilbake til den som ringer, så bare returnere summen av dypet returneres av barna.
Ved den magiske rekursjon, returneres nummeret til root sin besøkende vil være summen av dypet av alle barn.
For å få en gjennomsnittlig dybde, vil du ønsker å dele dette med antall bladnoder; som jeg vil overlate til en annen traversering å beregne. Det kan gjøres på en, men det ville være litt mer komplisert.