{
ElemType data;
BinTreeNode *leftChild;
BinTreeNode *rightChild;
}BinTreeNode;
typedef struct BinTree //创建树类型定义代码
{
BinTreeNode *root;
ElemType ref;
}BinTree;
//三种树的遍历方式代码 以下递归所有函数形参都为树根节点指针
void PreOrder(BinTreeNode *t)
{
if(t != NULL)
{
cout<<t->data<<" ";
PreOrder(t->leftChild);
PreOrder(t->rightChild);
}
}
void InOrder(BinTreeNode *t)
{
if(t != NULL)
{
InOrder(t->leftChild);
cout<<t->data<<" ";
InOrder(t->rightChild);
}
}
void PostOrder(BinTreeNode *t)
{
if(t != NULL)
{
PostOrder(t->leftChild);
PostOrder(t->rightChild);
cout<<t->data<<" ";
}
}
//递归求树的大小代码
int Size(BinTreeNode *t)
{
if(t == NULL)
return 0;
else
return Size(t->leftChild) + Size(t->rightChild) + 1;
}
//递归求树高度代码
int Height(BinTreeNode *t)
{
if(t == NULL)
return 0;
else
{
int leftheight = Height(t->leftChild);
int rightheight = Height(t->rightChild);
return (leftheight > rightheight ? leftheight : rightheight)+1;
}
}
//递归按值在树中查找数据代码
BinTreeNode* Find(BinTreeNode *t, ElemType key)
{
if(t == NULL)
return NULL;
if(t != NULL)
{
if(t->data == key)
return t;
BinTreeNode *p = Find(t->leftChild, key);
if(p != NULL)
return p;
return Find(t->rightChild, key);
}
}