#ifndef RECORD_H#define RECORD_H#include <iostream>using namespace std;class Record{ public: Record(); Record(string name, int age); virtual ~Record(); void Display(); protected: private: public: string name; int age;};#endif // RECORD_H
#ifndef TREE_H#define TREE_H#include "TreeNode.h"class Tree{ public: Tree(); virtual ~Tree(); void visit(TreeNode* node); void PreOrderVisit(TreeNode* node); void InOrderTraverse(TreeNode* root); protected: private: public: TreeNode* headNode;};#endif // TREE_H
#ifndef TREENODE_H#define TREENODE_H#include "Record.h"class TreeNode{ public: TreeNode(); TreeNode(Record record); virtual ~TreeNode(); void Display(); protected: private: public: Record treeRec; TreeNode* leftNode; TreeNode* rightNode;};#endif // TREENODE_H
#include "../include/Record.h"Record::Record(){}Record::Record(string name, int age){ this->name = name; this->age = age;}Record::~Record(){ //dtor}void Record::Display(){ cout<<"ÐÕÃû£º"<<name<<" "<<"ÄêÁ䣺"<<age<<endl;}
#include "../include/TreeNode.h"TreeNode::TreeNode(){}TreeNode::TreeNode(Record record){ treeRec = record; leftNode = NULL; rightNode = NULL;}TreeNode::~TreeNode(){ //dtor}void TreeNode::Display(){ cout<<"ÐÕÃû£º"<<treeRec.name<<" "<<"ÄêÁ䣺"<<treeRec.age<<endl;}
# Include ".. /include/tree. H "# include ".. /include/record. H "# include ".. /include/treenode. H "# include <stack> using namespace STD; tree: tree () {record RC0 (" Jiji ", 0); record RC1 (" Jiji ", 1 ); record RC2 ("Jiji", 2); record RC3 ("Jiji", 3); record RC4 ("Jiji", 4); record RC5 ("Jiji", 5 ); treenode * treenode0 = new treenode (RC0); treenode * treenode1 = new treenode (RC1); treenode * treenode2 = new treenode (RC2); treenod E * treenode3 = new treenode (RC3); treenode * treenode4 = new treenode (RC4); treenode * treenode5 = new treenode (RC5); headnode = treenode0; priority-> leftnode = treenode1; treenode0-> rightnode = treenode2; treenode2-> leftnode = treenode3; priority-> rightnode = priority; treenode3-> rightnode = treenode5;} tree ::~ Tree () {// dtor} void tree: visit (treenode * node) {If (node! = NULL) {node-> display () ;}} void tree: preordervisit (treenode * node) // recursively traverse first {If (node! = NULL) {node-> display (); preordervisit (node-> leftnode); preordervisit (node-> rightnode);} void tree: inordertraverse (treenode * root) // non-recursive traversal in the middle order {treenode * temp = root-> leftnode; stack <treenode *> * nstack = new stack <treenode *> (); // save it in the heap, saves stack resources. Nstack-> push (Root); While (nstack-> size ()> 0 | temp! = NULL) {If (temp! = NULL) {nstack-> push (temp); temp = temp-> leftnode;} else {temp = nstack-> top (); nstack-> POP (); temp-> display (); temp = temp-> rightnode ;}}}
#include <iostream>#include "./include/Record.h"#include "./include/TreeNode.h"#include "./include/Tree.h"using namespace std;int main(){ Tree tree; tree.PreOrderVisit(tree.headNode); cout<<endl; tree.InOrderTraverse(tree.headNode); return 0;}