int height(struct node *p) { struct node *temp=p; int h1=0,h2=0; if(p==NULL)return(0); if(p->left){h1=height(p->left);} if(p->right){h2=height(p->right);} return(max(h1,h2)+1); }
6.5. Binar daraxtning «Oynali» tasvirlanishi Agar daraxt ikkita daraxt o’z-o’zining oynadagi tasviridagidek hosil
qilinsa, u holda bunday daraxt simmetrik daraxt deyiladi. Daraxtning “oynali”
nusxasini olish uchun 3-listingdagi algoritmdan foydalaniladi. Birinchi ildizning
o’g’il tugunlari mavjudligi tekshiralidi va agar ular mavjud bo’lsa, ularning o’rni
almashtiriladi. Keyin bu harakat daraxtning chap va o’ng qism daraxtlari uchun
rekursiv takrorlanadi. Agar faqat bitta o’g’il tuguni bo’lsa, bir qadam pastga
o’tiladi va davom ettiriladi.
104
Listing 3. Teskari (revers) daraxt – C tilida rekursiv tadbiq qilish