/ Published in: C++
Implementacija binarnog stabla pomoću pokazivaÄa
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> using namespace std; struct element { int label; element *lijevi, *desni; }; element *Tbin = new element; element *Root (element *Tbin) { return Tbin; } element *pretrazivanje (element *el, int x) { if (el -> label == x) return el; if (el -> lijevi != NULL) if (pretrazivanje (el -> lijevi, x) != NULL) return pretrazivanje (el -> lijevi, x); if (el -> desni != NULL) if (pretrazivanje (el -> desni, x) != NULL) return pretrazivanje (el -> desni, x); return NULL; } int Label (element *el) { return el -> label; } element *Parent (element *n, element *Tbin) { element *child = NULL, *sibling = NULL; if (Tbin -> lijevi == n || Tbin -> desni == n) return Tbin; if (Tbin -> lijevi != NULL) child = Parent (n, Tbin -> lijevi); if (Tbin -> desni != NULL) sibling = Parent (n, Tbin -> desni); if (child != NULL) return child; if (sibling != NULL) return sibling; return NULL; } element *LeftChild (element *el) { return el -> lijevi; } element *RightChild (element *el) { return el -> desni; } void ChangeLabel (int x, element *el) { el -> label = x; } int CreateRight (int x, element *el) { if (RightChild (el) != NULL) return 0; element *novi = new element; el -> desni = novi; novi -> label = x; novi -> lijevi = NULL; novi -> desni = NULL; return 1; } int CreateLeft (int x, element *el) { if (LeftChild (el) != NULL) return 0; element *novi = new element; el -> lijevi = novi; novi -> label = x; novi -> lijevi = NULL; novi -> desni = NULL; return 1; } void Delete (element *el, element *Tbin) { if (el -> lijevi != NULL) Delete (el -> lijevi, Tbin); if (el -> desni != NULL) Delete (el -> desni, Tbin); if (el != Root (Tbin) && LeftChild (Parent (el, Tbin)) == el) Parent (el, Tbin) -> desni = NULL; else if (el != Root (Tbin)) Parent (el, Tbin) -> desni = NULL; delete el; } void Init (int x, element *Tbin) { Tbin -> label = x; Tbin -> lijevi = NULL; Tbin -> desni = NULL; } void PreOrder (element *n, element *Tbin) { if (n == NULL) return; cout << n -> label << ", "; PreOrder (LeftChild (n), Tbin); PreOrder (RightChild (n), Tbin); } void InOrder (element *n, element *Tbin) { if (n == NULL) return; InOrder (LeftChild (n), Tbin); cout << n -> label << ", "; InOrder (RightChild (n), Tbin); } void PostOrder (element *n, element *Tbin) { if (n == NULL) return; PostOrder (LeftChild (n), Tbin); PostOrder (RightChild (n), Tbin); cout << n -> label << ", "; }