ABA


"עזרה בתרגיל מבנה נתונים רקורסיה של עץ AVL"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13348 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13348
Static
חבר מתאריך 1.7.02
1329 הודעות
   22:21   30.05.06   
אל הפורום  
  עזרה בתרגיל מבנה נתונים רקורסיה של עץ AVL  
 
   אני צריך לכתוב רקורסיה בפסאודו קוד שרצה על "עץ חיפוש בינארי"
ובודקת האם הוא בעצם עץ AVL
ז"א לבדוק בכל תת עץ האם הגורמי איזון שלו הם 1,1- או 0
התוצאה הסופית צריכה להיות print AVL או print not AVL

יש למישהו מושג איך אני כותב את זה... כי כל פעם שאני כותב משהו ו"מריץ"
אותו על עץ לדוגמה זה לא מסתדר לי...


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  רעיון מהיר שעולה לי לראש.... MadXP 30.05.06 23:11 1
  פתרון מידי שנובע מההגדרות dyermaker  30.05.06 23:29 2
     תודה אח שלי.. Static 31.05.06 11:50 3
  תודה לכל מי שעזר.. הסתדרתי Static 31.05.06 17:27 4

       
MadXP

   23:11   30.05.06   
אל הפורום  
  1. רעיון מהיר שעולה לי לראש....  
בתגובה להודעה מספר 0
 
   לרוץ על כל המסלולים בעץ ולסמן במבנה עזר(מערך\רשימה...) את גובה כל מסלול.
בסופה של הרקורסיה תבדוק אם יש הבדלי גובה של יותר מ 1
כך תוכל לדעת אם העץ הוא עץ avl תקני או לא.

יכול להיות שיש פתרון מהיר יותר...לא עולה לי כרגע..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dyermaker 
חבר מתאריך 4.2.03
1644 הודעות
   23:29   30.05.06   
אל הפורום  
  2. פתרון מידי שנובע מההגדרות  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 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 רק אם הערך הזה לא אותחל, ואז להשתמש בערכים של הילדים כדי לחשב את הערך של האבא..

בכל מקרה נראה לי שזה אמור לעבוד

עריכה: משום מה זה לא מציג את הרווחים בין השורות..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Static
חבר מתאריך 1.7.02
1329 הודעות
   11:50   31.05.06   
אל הפורום  
  3. תודה אח שלי..  
בתגובה להודעה מספר 2
 
   כתבתי משהו דיי דומה פשוט לא כיסיתי את כל המקרים
אתה יכול לכתוב גם את פונקצית העזר של relhight

ד"א לא הבנתי את השורה בסוף
return 1 + max(relHeight(leftChild(t)), relHeight(rightChild(t)))end function
מזה ה 1 הזה? ומי זה MAX ?

תודה רבה!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Static
חבר מתאריך 1.7.02
1329 הודעות
   17:27   31.05.06   
אל הפורום  
  4. תודה לכל מי שעזר.. הסתדרתי  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net