ternary tree เป็นโครงสร้างข้อมูลแบบ tree ซึ่งแต่ละโหนดมีโหนดย่อยไม่เกินสามโหนด ซึ่งมักจะแสดงเป็น "ซ้าย" "กลาง" และ "ขวา" ในแผนผังนี้ โหนดที่มีลูกคือโหนดหลัก และโหนดย่อยอาจมีการอ้างอิงถึงผู้ปกครอง นี่คือโปรแกรม C++ เพื่อใช้ Ternary Tree และการข้ามผ่านของ Tree
อัลกอริทึม
Begin Declare function insert(struct nod** root, char *w) if (!(*root)) then *root = newnod(*w); if ((*w) < (*root)->d) then insert(&( (*root)->l ), w); else if ((*w) > (*root)->d) then insert(&( (*root)->r ), w); else if (*(w+1)) insert(&( (*root)->eq ), w+1); else (*root)->EndOfString = 1; End.
สำหรับการข้ามต้นไม้:
Begin Declare function traverseTTtil(struct nod* root, char* buffer, int depth) if (root) then traverseTTtil(root->l, buffer, depth) buffer[depth] = root->d if (root->EndOfString) then buffer[depth+1] = '\0' print the value of buffer. traverseTTtil(root->eq, buffer, depth + 1); traverseTTtil(root->r, buffer, depth); End.
ตัวอย่าง
#include<stdlib.h> #include<iostream> using namespace std; struct nod { char d; unsigned End. fString: 1; struct nod *l, *eq, *r; }*t = NULL; struct nod* newnod(char d) { t = new nod; t->d = d; t->End. fString = 0; t->l = t->eq = t->r = NULL; return t; } void insert(struct nod** root, char *w) { if (!(*root)) *root = newnod(*w); if ((*w) < (*root)->d) insert(&( (*root)->l ), w); else if ((*w) > (*root)->d) insert(&( (*root)->r ), w); else { if (*(w+1)) insert(&( (*root)->eq ), w+1); else (*root)->End. fString = 1; } } void traverseTTtil(struct nod* root, char* buffer, int depth) { if (root) { traverseTTtil(root->l, buffer, depth); buffer[depth] = root->d; if (root->End. String) { buffer[depth+1] = '\0'; cout<<buffer<<endl; } traverseTTtil(root->eq, buffer, depth + 1); traverseTTtil(root->r, buffer, depth); } } void traverseTT(struct nod* root) { char buffer[50]; traverseTTtil(root, buffer, 0); } int main() { struct nod *root = NULL; insert(&root, "mat"); insert(&root, "bat"); insert(&root, "hat"); insert(&root, "rat"); cout<<"Following is traversal of ternary tree\n"; traverseTT(root); }
ผลลัพธ์
Following is traversal of ternary tree bat hat mat rat