二叉树的基本知识

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


   head.h   //
#include <iostream>
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<<T->data<<"  ";
preOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
///先读根,之后读左子树,最后是右子树
}
}

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

///后序遍历
void postOrderTraverse(BiTree T)
{
if(T)
{
postOrderTraverse(T->lchild);
postOrderTraverse(T->rchild);
cout<<T->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<<"现在创建二叉树//"<<endl;
createTree(T);

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

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


以上的代码并不难,应该能看懂的!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值