1 / 25

מבני הנתונים מערך ורשימה מתאימים לניהול סדרות.

עץ. עצים. מבני הנתונים מערך ורשימה מתאימים לניהול סדרות. עץ מתאים לניהול אוספים בעלי קשרים היררכיים: לדוגמה: משפחה או מערכת קבצים. עצים בינריים. עץ בינרי ( Binary tree ) הוא שורש עם שני תת עצים לכל היותר , כאשר : - כל תת עץ הוא עץ בינרי

alpha
Download Presentation

מבני הנתונים מערך ורשימה מתאימים לניהול סדרות.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. עץ המרכז להוראת המדעים, האוניברסיטה העברית

  2. עצים • מבני הנתונים מערך ורשימה מתאימים לניהול סדרות. • עץ מתאים לניהול אוספים בעלי קשרים היררכיים: לדוגמה: משפחה או מערכת קבצים. המרכז להוראת המדעים, האוניברסיטה העברית

  3. עצים בינריים • עץ בינרי (Binary tree) הוא שורש עם שני תת עצים לכל היותר, כאשר : - כל תת עץ הוא עץ בינרי - שני התת עצים זרים זה לזה (אין להם צמתים משותפים) המרכז להוראת המדעים, האוניברסיטה העברית

  4. תכונות 3 9 6 14 34 • יש לעץ שלוש תכונות: info, עץ ימני ועץ שמאלי. המרכז להוראת המדעים, האוניברסיטה העברית

  5. חישבו על ייצוג ? • שם המחלקה הינו BinaryTree. המרכז להוראת המדעים, האוניברסיטה העברית

  6. תכונות public class BinaryTree<T> { private T info; private BinaryTree<T> left; private BinaryTree<T> right; } המרכז להוראת המדעים, האוניברסיטה העברית

  7. ממשק העץ המרכז להוראת המדעים, האוניברסיטה העברית

  8. ממשק העץ המרכז להוראת המדעים, האוניברסיטה העברית

  9. בניית העץ 1 4 9 6 BinaryTree<Integer> t1 = new BinaryTree<Integer>(4); t1.setLeft(new BinaryTree<Integer>(9)); t1.setRight(new BinaryTree<Integer>(6)); t1.setInfo(5); 5 המרכז להוראת המדעים, האוניברסיטה העברית

  10. בניית העץ 2 4 9 6 BinaryTree<Integer> t1 = new BinaryTree<Integer>(9); BinaryTree<Integer> t2 = new BinaryTree<Integer>(6); BinaryTree<Integer> t3 = new BinaryTree<Integer> (4, t1,t2); המרכז להוראת המדעים, האוניברסיטה העברית

  11. תרגיל 1 1. כתבו את המחלקה BinaryTree. כתבו מחלקה ראשית הבודקת את המחלקה שכתבתם. המרכז להוראת המדעים, האוניברסיטה העברית

  12. ספירת הצמתים ממשו פעולה חיצונית, המקבלת עץ, ומחזירה את מספר הצמתים בעץ. ממשו פעולה פנימית המחזירה את מספר הצמתים בעץ. המרכז להוראת המדעים, האוניברסיטה העברית

  13. ספירת הצמתים המרכז להוראת המדעים, האוניברסיטה העברית

  14. ספירת הצמתים public static <T> int numOfNodes(BinaryTree<T> tree) { if (tree == null) return 0; return numOfNodes(tree.getLeft()) + numOfNodes(tree.getRight())+1 ; } public class BinaryTree{ … publicint numOfNodes(){ int leftCount = 0; int rightCount = 0; if ( this.getLeft() != null) leftCount = this.getLeft().numOfNodes(); if (this.getRight() != null) rightCount = this.getRight().numOfNodes(); return (leftCount + rightCount+1); } } המרכז להוראת המדעים, האוניברסיטה העברית

  15. ספירת הצמתים public static <T> int numOfNodes(BinaryTree<T> tree){ if (tree == null) return 0; return numOfNodes(tree.getLeft()) + numOfNodes(tree.getRight())+1 ; } public static <T> int numOfNodes(BinaryTree<T> tree){ int leftCount = 0; int rightCount = 0; if ( tree.getLeft() != null) leftCount = numOfNodes(tree.getLeft()); if (tree.getRight() != null) rightCount = numOfNodes(tree.getRight()); return (leftCount + rightCount+1); } המרכז להוראת המדעים, האוניברסיטה העברית

  16. סריקה בסדר תחילי סרוק-בסדר-תחילי() {האלגוריתם סורק את העץ הנוכחי בסדר תחילי{ בקר בשורש העץ אם קיים תת עץ שמאלי, הפעל דרכו את סרוק-בסדר-תחילי() אם קיים תת עץ ימני, הפעל דרכו את סרוק-בסדר-תחילי() המרכז להוראת המדעים, האוניברסיטה העברית

  17. סריקה בסדר תוכי סריקה תוֹכית (inorder): סרוק-בסדר-תוֹכי () { האלגוריתם סורק את העץ הנוכחי בסדר תוֹכי} אם קיים תת עץ שמאלי, הפעל דרכו אתסרוק-בסדר-תוֹכי() בקר בשורש העץ אם קיים תת עץ ימני, הפעל דרכו את סרוק-בסדר-תוֹכי() המרכז להוראת המדעים, האוניברסיטה העברית

  18. פעולות נוספות • רקורסיה: public String preorderString() { String str = this.getInfo()+” “; if (this.getLeft() != null) str += this.getLeft().preorderString(); if (this.getRight() != null) str+= this.getRight().preorderString(); return str; } המרכז להוראת המדעים, האוניברסיטה העברית

  19. תרגיל 2 2. הוסיפו את הפעולות : public String postorderString(); public String inorderString(); פעולות אלו פועלות כמו toString אך בונות את המחרוזת לפי סדר מסוים המצוין בשם הפעולה. הדפיסו את העץ שיצרתם בפעולה ראשית בשתי הדרכים. המרכז להוראת המדעים, האוניברסיטה העברית

  20. סריקה לפי רמות סרוק-לפי-רמות () {האלגוריתם סורק את צומתי העץ לפי רמות, משמאל לימין. } בנה תור חדש הכנס את העץ הנוכחי לתוך התור כל עוד התור אינו ריק, בצע את הפעולות: הוצא עץ מתוך התור בקר בשורשו של העץ אם קיים תת-עץ שמאלי לעץ, הכנס אותו לתור אם קיים תת-עץ ימני לעץ, הכנס אותו לתור המרכז להוראת המדעים, האוניברסיטה העברית

  21. תרגיל 3 • סריקה לפי רמות. • עליכם לצרף את המחלקה Queue , List, Node שכתבנו עבורכם (מחלקות גנריות). • עליכם לממש את הפעולה levelOrderString הסורקת את העץ לפי רמות. המרכז להוראת המדעים, האוניברסיטה העברית

  22. האם קיים • ברצוננו לכתוב פעולהexistsIn הבודקת האם עץ של מספרים שלמים מכיל ערך נתון: public static boolean existsIn (BinaryTree<Integer> tree, int x) { boolean resL = false; boolean resR = false; if (tree.getInfo() == x) return true; if (tree.getLeft() != null) resL = existsIn (tree.getLeft(),x); if (tree.getRight() != null) resR = existsIn (tree.getRight(),x); return (resL || resR); } המרכז להוראת המדעים, האוניברסיטה העברית

  23. עץ ריק • פסקל: function tree_is_empty(tree:tree_type): boolean; begin tree_is_empty:=(tree=NIL); end; • סי: int tree_is_empty(tree_type tree){ return tree == NULL; } המרכז להוראת המדעים, האוניברסיטה העברית

  24. עץ ריק • ג'אווה: publicclass BinaryTree{ publicboolean isEmpty(){ returnthis == null; } } לא ניתן לעשות זאת ! המרכז להוראת המדעים, האוניברסיטה העברית

  25. תרגיל • ממשו שתי פעולות: public int leaves() פעולה המחזירה את מספר העלים בעץ public int height() פעולה המחזירה את גובה העץ המרכז להוראת המדעים, האוניברסיטה העברית

More Related