Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //in tree.cpp
- bool tree::read_tree(FILE *fp)
- {
- char buf[LEN];
- int tmp;
- if (fscanf(fp,"%s%d",buf,&tmp)!=2)
- return false;
- root = new tree_node(buf,tmp);
- while (fscanf(fp,"%s%d",buf,&tmp)==2)
- {
- tree_node *add = new tree_node(buf, tmp);
- insert(root,add);
- }
- return true;
- }
- void tree::insert(tree_node *root,tree_node *add)
- {
- if(*add < *root)
- {
- if(!root->left)
- root->left = add;
- else
- insert(root->left,add);
- }
- else
- {
- if(!root->right)
- root->right = add;
- else
- insert(root->right,add);
- }
- }
- //tree.h
- #ifndef TREE_H
- #define TREE_H
- #include "tree_node.h"
- class tree
- {
- private:
- tree_node *root;
- tree_node *curr;
- void del(tree_node *root)
- {
- if(!root)
- return;
- if(root->left)
- del(root->left);
- if(root->right)
- del(root->right);
- delete root;
- }
- public:
- tree()
- {
- root = 0;
- curr = 0;
- }
- ~tree()
- {
- del(root);
- root = 0;
- curr = 0;
- }
- tree_node *get_root() { return root;}
- bool read_tree(FILE*);
- void print_tree(tree_node *root, int level = 0);
- void insert(tree_node *root, tree_node *add);
- int countonlevel(tree_node * root, int level);
- int diflen(tree_node *root);
- //problems
- int problem1(tree_node *root);
- int problem2(tree_node *root);
- int problem3(tree_node *root);
- int problem4(tree_node *root);
- int problem5(tree_node *root);
- };
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement