栈
BiNode<T>* root;
T ch;
cout<<"请按前序序列方式输入节点数据,每次输入一个:";
cin>>ch;
if (ch=='#')
root=NULL; //建立一棵空树
else
{
root=new BiNode<T>; //生成一个结点
root->data=ch;
root->lchild=Creat(); //递归建立左子树
root->rchild=Creat(); //递归建立右子树
}
return root;
}
template <class T>
void BiTree<T>::Release(BiNode<T> *root)
{
if(root!=NULL)
{
Release(root->lchild);
Release(root->rchild);
delete root;
}
}
template<class T>
BiTree<T>::~BiTree(void)
{
Release(root);//析构函数,释放存储指针所需要的空间
}
template<class T>
BiNode<T>* BiTree<T>::Getroot( )//获取根节点所在指针的位置
{return root;}
//前序遍历
template <class T>
void BiTree<T>::PreOrder(BiNode<T> *root)
{
if (root ==NULL) return; //递归调用的结束条件
else
{
cout<<root->data; //访问根结点的数据域
PreOrder(root->lchild); //前序递归遍历bt的左子树
PreOrder(root->rchild); //前序递归遍历bt的右子树
}
}
//中序遍历