Өгөгдлийн бүтэц Мод

Чөлөөт нэвтэрхий толь — Википедиагаас
Jump to navigation Jump to search

Байгаль дээр үндэс, мөчир, навч бүхий ургамлыг мод гэдэг. Компьютерын ухаанд модтой бүтцийн хувьд төстэй өгөгдлийн бүтцийг мөн мод гэдэг. Гэхдээ компьютерын ухаанд модыг уруу харуулж зурдаг. Мод гэдэг бүтцийн хувьд үндэс бол хамгийн чухал элемент бөгөөд нэг модонд цорын ганц үндэс байна. Үндсээс мөчир, мөчрөөс навч гардаг. Салаалж ургасан модны хэсгийг дэд мод гэнэ. Нэг зангилаанаас хэдэн элемент – мөчир/навч салаалсан гэдгээс нь хамааруулж хоёртын, N –тын мод гэж ялгаж болдог. Тэдэн дотор хоёрын мод онцгой байр эзэлдэг бөгөөд хоёртын модонд суурилсан олон хэрэглээ байдаг. Модны тухай ярихад өвөг эцэг, эцэг, хүүхэд, ахан дүүс гэсэн ухагдахуунуудыг бас хэрэглэдэг.

Мод нь ямар нэг нөхцөлийг хангах тодорхой дүрмээр зохион байгуулагдсан зангилаанууд болон тэдгээрийг холбосон холбоосуудыг агуулдаг. Зангилаа нь мэдээлэлийг хадгалах ердийн нэг объект ба холбоос нь хоёр зангилааны хоорондын харилцааг тодорхойлдог. Холбоосоор холбогдсон модны дараалсан зангилаануудын жагсаалтыг зам гэнэ.

Модыг ингэж сурах нь байгаль дээрхтэй адилтгаж ойлгоход хэрэгтэй ч компьютерын ухаанд дараах байдлаар зурдаг. Амьдрал дээр мод бүтцээр илэрхийлж болох, илүү тохиромжтой олон тооны өгөгдлийг нэрлэж болно. Жишээ нь хүмүүсийн ургийн бичиг, байгуулгын зохион байгуулалтын бүтэц, Байгаль, техникийн нийлмэл системийн бүтэц г.м. Өгөгдлийн мод бүтэц дээр боловсруулалт хийнэ гэдэг үнэн чанартаа модны үндсээс навч хүртэл дээшээ, доошоо салаа мөчрөөр дамжин нэвтрэлт хийнэ гэсэн үг. Хоёртын модонд нэвтрэлт нь сонгосон алгоритмаасаа хамаарч Preorder, Inorder, Postorder, Levelorder гэсэн 4 төрөлд хуваагддаг.

Preorder нэвтрэлт:

public static void preOrder(BinaryTreeNode t)
{
   if (t != null)
  {
      visit(t);
      preOrder(t.leftChild);
      preOrder(t.rightChild);
   }
}


inOrder нэвтрэлт:

public static void inOrder(BinaryTreeNode t)
{
  if (t != null)
  {
     inOrder(t.leftChild);
     visit(t);
     inOrder(t.rightChild);
  }
}

PostOrder нэвтрэлт:

public static void postOrder(BinaryTreeNode t)
{
   if (t != null)
   { 
      postOrder(t.leftChild);
      postOrder(t.rightChild);
      visit(t);
   }
}

LevelOrder нэвтрэлт:

public static void LevelOrder(BinaryTreeNode t)
{
   while (t != null)
  {
      t –д зочлоод хүүхдүүдийг нь FIFO дараалалд хийнэ;
      зангилааг FIFO дарааллаас устгаж, дуудна t;
     // дараалал хоосон бол устгал null –г буцаана
   }
}