ערכתי לאחרונה בתאריך 30.05.06 בשעה 23:30 בברכה, dyermaker
boolean function isAvl(tree t) if leftChild(t)==null AND rightChild(t)==null return TRUE int balance=relHeight(rightChild(t)) - relHeight(leftChild(t)) if balace>1 or balance<-1 return FALSE else return isAvl(rightChild(t)) AND isAvl(leftChild(t)) end function int function relHeight (tree t) if t=NULL return 0 return 1 + max(relHeight(leftChild(t)), relHeight(rightChild(t))) end function
|
אפשר לשכלל קצת בשביל לחסוך חישובים מיותרים, כמו למשל להוסיף שדה גובה לכל קדקוד ולהפעיל את הפונקציה relHeight רק אם הערך הזה לא אותחל, ואז להשתמש בערכים של הילדים כדי לחשב את הערך של האבא..
בכל מקרה נראה לי שזה אמור לעבוד
עריכה: משום מה זה לא מציג את הרווחים בין השורות..