建树的两种递归版本:
1.无返回值版(较易理解)
#include <iostream>
#include <string>
using namespace std;
class BiTreeNode {
public:
BiTreeNode *LeftNode;
BiTreeNode *RightNode;
char data;
BiTreeNode() :LeftNode(NULL), RightNode(NULL) {}
};
class BiTree {
BiTreeNode *Root;
string strTree;
int pos;
void CreateBiTree(BiTreeNode *p);
void PreOrder(BiTreeNode *p);
public:
BiTree();
~BiTree();
void CreateBiTree();
void PreOrder();
};
BiTree::BiTree() {
strTree = "";
pos = 0;
Root = new BiTreeNode();
}
BiTree::~BiTree() {
BiTreeNode *p = Root;
if (p == NULL)