二叉树的建立与遍历(数据结构)

182 阅读1分钟

之前上数据结构时,只是上课听听,没咋在课下实现,现在大二都快结束了,经过几波的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);
    }
}