Algorithm การสร้าง Tree
CreateTree (Tree, ele)
{ if (ele > Tree->infor) if (Tree->rigth <> null ) CreateTree (Tree->rigth, ele); else insert (Tree, ele); else if (Tree->left <> null ) CreateTree (Tree->left, ele); else insert (Tree, ele); } อีกรูปแบบCreateTree(root)
{ do { getData(x); if(x!='$') { new(newNode); newNode->infor = x; newNode->L = newNode->R = null; if(root == Null) { root = newNode; } else { dumy = root; flag = 1; while(flag==1) { if(x > dumy->infor) { if(dumy->R != Null) { dumy = Rdumy->R; } else { dumy->R = newNode; flag = 0; } } else { if(dumy->L != Null) { dumy = Rdumy->L; } else { dumy->L = newNode; flag = 0; } } } } } } while(x!='$'); return root; }
Algorithm การเยี่ยม Node
Inorder (Tree) แบบ NonRecursive
Inorder (Tree)
{ while(Tree) { while(Tree <> null ) { pushstack(Tree); Tree =Tree->left; } if (top = 0) exit //return else { popstack(Tree); display(Tree->infor); Tree =Tree->rigth; } } }
Inorder (Tree) แบบ Recursive
ReInorder (Tree)
{ if (Tree = null ) display("Emptry Tree"); else { if (Tree->left <> null ) ReInorder (Tree->left); display(Tree->infor); if (Tree->rigth <> null ) ReInorder (Tree->rigth); } }
Preorder (Tree) แบบ NonRecursive
Preorder (Tree)
{ if (Tree = null ) display("Emptry Tree"); else { pushstack(Tree); while(Top <> null ) { popstack(p); while(p <> null) { display(p->infor); if (p->rigth <> null ) pushstack(p->rigth); p = p->left; } } } }Preorder (Tree) แบบ Recursive
RePreorder (Tree)
{ if (Tree = null ) display("Emptry Tree"); else { display(Tree->infor); if (Tree->left <> null ) Preorder (Tree->left); if (Tree->rigth <> null ) Preorder (Tree->rigth); } }
Inorder (Tree) แบบ NonRecursive (ยากมาก)
Postorder (Tree)
{ if (Tree = null ) display("Emptry Tree"); else { p = tree; pushstack(null,0); Loop: while(p <> null ) { d =0; pushstack(p,d); p = p->left; } popstack(p,d); while(p <> null ) { if (d =0) { d =1; pushstack(p,d); p = p->rigth; goto Loop; } display(p->infor); popstack(p,d); } } }Postorder (Tree) แบบ Recursive
RePostorder (Tree)
{ if (Tree = null ) display("Emptry Tree"); else { if (Tree->left <> null ) Postorder (Tree->left); if (Tree->rigth <> null ) Postorder (Tree->rigth); display(Tree->infor); } }
***ตรวจสอบความคล้าย (Similar) และเหมือนกัน (Equivalent) ของ Tree
Algorithm นี้สามารถ ทำงานได้ทั้งสองอย่าง ขึ้นอยู่กับค่าของ choice ที่ส่งมา
compare(TreeA, TreeB, flag, choice)
{ if (choice = 2) if (TreeA->item <> TreeB->item) flag = 'n'; if ((TreeA->lnext <> null) and (TreeB->lnext <> null) and (flag = 'y')) compare(TreeA->lnext,TreeB->lnext,flag,choice); else if ((TreeA->lnext <> TreeB->lnext ) flag = 'n'; if ((TreeA-rnext <> null) and (TreeB->rnext <> null) and (flag = 'y')) compare(TreeA->rnext,TreeB->rnext,flag,choice); else if (TreeA->rnext <> TreeB->rnext) flag = 'n'; }