二叉树的基础

#include
using namespace std;

//输入示例ab##c##
 
//定义节点
typedef struct node
{
    struct node *lchild;
    struct node *rchild;
	char data;
}BiTreeNode, *BiTree; 
   
//按照前序顺序建立二叉树
void createBiTree(BiTree &T)
{
	char c;
	cin >> c;
	if('#' == c)             //当遇到#时,令树的根节点为NULL,从而结束该分支的递归
	T = NULL;
	else
	{
		T = new BiTreeNode;
		T->data=c;
		createBiTree(T->lchild);
		createBiTree(T->rchild);
	}
}

//前序遍历二叉树并打印
void preTraverse(BiTree T)
{
    if(T)
    {
        cout<data<<" ";
        preTraverse(T->lchild);
        preTraverse(T->rchild);
    }
}
//中序遍历二叉树并打印
void midTraverse(BiTree T)
{
    if(T)
    {
        preTraverse(T->lchild);
        cout<data<<" ";
        preTraverse(T->rchild);
    }
}
//后序遍历二叉树并打印
void postTraverse(BiTree T)
{
    if(T)
    {
        preTraverse(T->lchild);
        preTraverse(T->rchild);
        cout<data<<" ";
    }
}

int main()
{
	BiTree T;               //声明一个指向二叉树根节点的指针               
    createBiTree(T);
    cout<<"二叉树创建完成!"<

 

你可能感兴趣的:(二叉树的基础)