//////////////////////////////////////////////////
//CreateBinaryTree()私有成员函数
//用输描述字符流递归递归创建一个二叉树
//输入的字符流必须是前序序列的二叉树
//每个叶子结点后都要加上两个#的结束符号结点
//////////////////////////////////////////////////
template<class T>
void CreateBinaryTree(istream& in
,BinTreeNode<T>* subTree)
{
T item;
//递归建立二叉树
if(!in.eof())
{
in>>item; //输入字符
if(item!=RefValue) //如果没有到结束符号
{
subTree=new BinTreeNode<T>(item);
//新建子树的根结点
if(subTree==NULL)
{cout<<"根结点内存分配失败!"<<endl;exit(1);}
CreateBinaryTree(in,subTree->leftChild);
//递归建立左子树
CreateBinaryTree(in,subTree->rightChild);
//递归建立右子树
}
else
return NULL;
}
};
////////////////////////CreateBinaryTree()函数结束
//CreateBinaryTree()私有成员函数
//用输描述字符流递归递归创建一个二叉树
//输入的字符流必须是前序序列的二叉树
//每个叶子结点后都要加上两个#的结束符号结点
//////////////////////////////////////////////////
template<class T>
void CreateBinaryTree(istream& in
,BinTreeNode<T>* subTree)
{
T item;
//递归建立二叉树
if(!in.eof())
{
in>>item; //输入字符
if(item!=RefValue) //如果没有到结束符号
{
subTree=new BinTreeNode<T>(item);
//新建子树的根结点
if(subTree==NULL)
{cout<<"根结点内存分配失败!"<<endl;exit(1);}
CreateBinaryTree(in,subTree->leftChild);
//递归建立左子树
CreateBinaryTree(in,subTree->rightChild);
//递归建立右子树
}
else
return NULL;
}
};
////////////////////////CreateBinaryTree()函数结束