数据结构二叉树.doc
文本预览下载声明
#includeiostream.h
//#includemystring.h
#includestack
//#includequeue.cpp
//二叉链表结点的类定义
using namespace std;
templateclass T
class binarytreenode
{
//friend class binarytreeT;
private:
T info;
binarytreenodeT * left;
binarytreenodeT * right;
public:
//binarytreenode()
binarytreenode(T ele){info=ele;left=NULL;right=NULL;}
binarytreenode(T ele,binarytreenodeT * l,binarytreenodeT * r){info=ele;left=l;right=r;}
T value()const;
binarytreenodeT * leftchild()const;
binarytreenodeT * rightchild()const;
void setleftchild(binarytreenodeT *l);
void setrightchild(binarytreenodeT *l);
void setvalue(T val);
};
/*templateclass T
binarytreenode::binarytreenode()
{
left=null;
right=null;
}
templateclass T
binarytreenode::binarytreenode(T ele)
{
info=ele;
left=NULL;
right=NULL;
}
templateclass T
binarytreenode::binarytreenode(T ele,binarytreenodeT * l,binarytreenodeT * r)
{
info=ele;
left=l;
right=r;
}*/
templateclass T
T binarytreenodeT::value()const
{
return info;
}
templateclass T
binarytreenodeT * binarytreenodeT::leftchild()const
{
return left;
}
templateclass T
binarytreenodeT * binarytreenodeT::rightchild()const
{
return right;
}
templateclass T
void binarytreenodeT::setleftchild(binarytreenodeT * l)
{
left=l;
}
templateclass T
void binarytreenodeT::setrightchild(binarytreenodeT * r)
{
right=r;
}
templateclass T
void binarytreenodeT::setvalue(T val)
{
info=val;
}
//二叉链表的类定义
templateclass T
class binarytree
{
private:
binarytreenodeT * root;
public:
binarytree(){root=NULL;}
~binarytree(){deletebinarytree(root);}
binarytreenodeT * Root(){return root;}
binarytreenodeT * parent(binarytreenodeT * current);
binarytreenodeT * leftsibling(binarytreenodeT * current);
binarytreenodeT * rightsibling(binarytreenodeT * current);
void creattree(T info);
void creattree(T info,binarytreeT lefttree,binarytreeT righttree);
// void creattree(mystringchar a);
void deletebinarytree
显示全部