二叉树的基本知识

下面是在下参考一些书籍(零基础学数据机构)以及自己修改的代码,可能会有错,请见谅!


////////////////////////////////////    head.h   //////////////////////////////////////
#include
using namespace std;

struct Node
{
char data;
Node *rchild;
Node *lchild;
};

typedef Node BiNode;
typedef Node* BiTree;

///建立一棵树(缺点:1,这棵树必须是满二叉树,要不然程序是不会退出的  2,必须手动输入)
void createTree(BiTree &T)
{
char c;
cout<<"input c :";
cin>>c;

if(c=='#')
{
T=NULL;
}
else
{
T=(BiTree ) malloc (sizeof(BiNode));
if(!T)
{
exit(-1);
}
T->data=c;
createTree(T->lchild);
createTree(T->rchild);
}
}


///二叉树的先序遍历
void preOrderTraverse(BiTree T)
{
if(T)///如果那棵树不是空
{
cout<data<<"  ";
preOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
///先读根,之后读左子树,最后是右子树
}
}

///中序遍历
void inOrderTraverse(BiTree T)
{
if(T)
{
inOrderTraverse(T->lchild);
cout<data<<"  ";
inOrderTraverse(T->rchild);
}
}

///后序遍历
void postOrderTraverse(BiTree T)
{
if(T)
{
postOrderTraverse(T->lchild);
postOrderTraverse(T->rchild);
cout<data<<"  ";
}
}



///////////////////////////     main.cpp    ///////////////////////////////////////
#include "head.h"

void createTree(BiTree &T);
void preOrderTraverse(BiTree T);
void inOrderTraverse(BiTree T);
void postOrderTraverse(BiTree T);


void main()
{
BiTree T;

cout<<"////////////现在创建二叉树//////////"<
createTree(T);

cout<<"先序遍历:";
preOrderTraverse(T);
cout<

cout<<"中序:";
inOrderTraverse(T);
cout<
cout<<"后序:";
postOrderTraverse(T);
cout<
}


以上的代码并不难,应该能看懂的!

你可能感兴趣的:(二叉树的基本知识)