您的位置:首页 > 理论基础 > 数据结构算法

数据结构(十二) 二叉树的基本操作 --- 创建一个二叉树 前中后序遍历二叉树

2017-01-01 19:55 756 查看
//二叉树可以顺序存储也可以链式存储   顺序存储适合满二叉树和完全二叉树但不适合一般的二叉树
//用链式存储对二叉树的一些基本操作
//采用的二叉链表的方法
#include <iostream>

using namespace std;

//二叉树的结构体
typedef struct Node
{
char data;
struct Node *lchild;
struct Node *rchild;
}*TreeNode;

//二叉树的创建
//输入时注意比如先序序列为123 你应该输入 1 2 # # 3 # #
void createBiTree(TreeNode &Tree)
{
char  data;
cin>>data;
if(data=='#')
{
Tree = NULL;
}
else
{
Tree = new Node();
Tree->data = data;
createBiTree(Tree->lchild);
createBiTree(Tree->rchild);
}
}
//二叉树的先序遍历
void preBiTree(TreeNode &Tree)
{
if(Tree)
{
cout<<Tree->data;
preBiTree(Tree->lchild);
preBiTree(Tree->rchild);
}

}
//二叉树的中序遍历
void LDRBiTree(TreeNode &Tree)
{
if(Tree)
{
LDRBiTree(Tree->lchild);
cout<<Tree->data;
LDRBiTree(Tree->rchild);
}

}
//二叉树的后序遍历
void LRDBiTree(TreeNode &Tree)
{
if(Tree)
{
LRDBiTree(Tree->lchild);
LRDBiTree(Tree->rchild);
cout<<Tree->data;
}

}

int main()
{
TreeNode Tree;
cout<<"请输入你要创建的二叉树的数据(按先序遍历创建的二叉树#为空节点的表示)\n";
createBiTree(Tree);
cout<<"先序遍历的结果为:\n";
preBiTree(Tree);
cout<<"中序遍历的结果为:\n";
LDRBiTree(Tree);
cout<<"后序遍历的结果为:\n";
LRDBiTree(Tree);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: