#include "btree.h" void InitTree(Tree * ptree) { ptree->root = NULL; ptree->size = 0; } bool EmptyTree(const Tree * ptree) { return !ptree->root?true:false; } int CountItem(const Tree * ptree) { return ptree->size; } static bool ToLeft(ElemType e1, ElemType e2) { return e1 < e2; } static bool ToRight(ElemType e1, ElemType e2) { return e1 > e2; } static bool AddNode(Node * new, Node * root) { if (ToLeft(new->e, root->e)) { if (root->left == NULL) root->left = new; else AddNode(new,root->left); } else if (ToRight(new->e,root->e)) { if (root->right == NULL) root->right = new; else AddNode(new,root->right); } else return false; return true; } bool AddItem(const ElemType e, Tree * ptree) { Node * new = (Node *) calloc (1,sizeof(Node)); if (!new) return false; new->e = e; ptree->size++; if (!ptree->root) ptree->root = new; else AddNode(new,ptree->root); return true; } bool ResTree(Node * root) { Node * pnode = root; if (pnode->right) { ResTree(pnode->right); free(pnode); } else if (pnode->left) { ResTree(pnode->left); free(pnode); } else free(pnode); return true; } void PrintTree(const Node * root) { printf("%c",root->e); if (root->left) PrintTree(root->left); if (root->right) PrintTree(root->right); }