#include <cstdio> class BinaryTree { int *left,*right,V,root; void preOrderTraversal(int u) { printf("%d\n",u); if(left[u]!=-1) preOrderTraversal(left[u]); if(right[u]!=-1) preOrderTraversal(right[u]); } void postOrderTraversal(int u) { if(left[u]!=-1) postOrderTraversal(left[u]); if(right[u]!=-1) postOrderTraversal(right[u]); printf("%d\n",u); } void inOrderTraversal(int u) { if(left[u]!=-1) inOrderTraversal(left[u]); printf("%d\n",u); if(right[u]!=-1) inOrderTraversal(right[u]); } public: void printPreOrder() {if(root!=-1) preOrderTraversal(root);} void printPostOrder() {if(root!=-1) postOrderTraversal(root);} void printInOrder() {if(root!=-1) inOrderTraversal(root);} BinaryTree(int V_=100) { left=new int[V_+3]; right=new int[V_+3]; for(int i=0;i<=V_;i++) left[i]=right[i]=-1; root=-1, V=0; } bool isAvailable(int v) { int u=root; while(u!=-1) { if(v<u) u=left[u]; else if(v>u) u=right[u]; else return true; } return false; } bool addVertex(int v) //returns true if added, false if already available { int u=root; while(u!=-1) { if(v<u) { if(left[u]!=-1) u=left[u]; else left[u]=v, u=-1; } else if(v>u) { if(right[u]!=-1) u=right[u]; else right[u]=v, u=-1; } else return false; } if(u==root) root=v; V++; return true; } }; int main() { /* code */ return 0; }
BinaryTree
Subscribe to:
Posts (Atom)