之前上数据结构时,只是上课听听,没咋在课下实现,现在大二都快结束了,经过几波的ACM竞赛,感觉数据结构太重要了,带着兴趣和欲望重新学一下数据结构中的基础操作
我用的是先序次序输入二叉树中节点建立的二叉树,用链式存储结构进行存储,其实在写的时候我在网上搜了好多都是带有typedef的,但是我不习惯用这个,经过几波更改,决定用下面这个写写,其实很简单只要懂一点单链表的知识,你一定能看懂,这个是我写的单链表的一些操作blog.csdn.net/HeZhiYing_/…
好了,看懂了单链表可以直接看二叉树建立与遍历的代码了
#include<stdio.h>
#include<algorithm>
using namespace std;
struct Node{
char data;
Node *left;
Node *right;
};
void CreateBitree(Node* &T);//这里是引用
void Pre(Node* T);//先序遍历
void Mid(Node* T);//中序遍历
void Post(Node* T);//后序遍历
int main()
{
Node *T;
CreateBitree(T);
printf("先序遍历\n");
Pre(T);
printf("\n中序遍历\n");
Mid(T);
printf("\n后序遍历\n");
Post(T);
return 0;
}
void CreateBitree(Node* &T)//先序次序输入二叉树中节点
{
char ch;
scanf("%c",&ch);
if(ch=='#')
return;
T=new Node();
T->data=ch;
//printf("***%c",T->data);
CreateBitree(T->left);
CreateBitree(T->right);
}
void Pre(Node* T)
{
if(T!=NULL)
{
printf("%c",T->data);
Pre(T->left);
Pre(T->right);
}
}
void Mid(Node* T)
{
if(T!=NULL)
{
Mid(T->left);
printf("%c",T->data);
Mid(T->right);
}
}
void Post(Node* T)
{
if(T!=NULL)
{
Post(T->left);
Post(T->right);
printf("%c",T->data);
}
}