//二叉树的前序、中序递归遍历与先序生成
#include <bits/stdc++.h>
using namespace std;

typedef struct TNode *PtrToTNode;
typedef PtrToTNode BinTree;

typedef char ElementType;

struct TNode{
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

//二叉树的先序递归遍历
void PreorderTraversal(BinTree BT){
    if(BT){
        printf("%c ",BT->Data);
        PreorderTraversal(BT->Left);
        PreorderTraversal(BT->Right);
    }
}
//二叉树的中序递归遍历
void InOrderTraversal(BinTree BT){
    if(BT){
        InOrderTraversal(BT->Left);
        printf("%c ",BT->Data);
        InOrderTraversal(BT->Right);
    }
}

BinTree CreateBinTreeNode(ElementType X){
    BinTree node = (BinTree)malloc(sizeof(struct TNode));
    node->Data = X;
    node->Left = NULL;
    node->Right = NULL;
    return node;
}

BinTree PreCreateBinTree(){
    ElementType X;
    scanf("%c",&X);
    if(X==' '){
        return NULL;
    }
    else{
        BinTree BT = CreateBinTreeNode(X);
        BT->Left = PreCreateBinTree();
        BT->Right = PreCreateBinTree();
        return BT;
    }
}

//释放二叉树所有结点内存
void FreeBinTree(BinTree BT){
    if(BT){
        BinTree BTL=BT->Left,BTR=BT->Right;
        free(BT);
        BT = NULL;
        FreeBinTree(BTL);
        FreeBinTree(BTR);
    }
}

int main(){
    BinTree BT = PreCreateBinTree();

    PreorderTraversal(BT);
    cout << endl;
    InOrderTraversal(BT);
    cout << endl;
    InOrderTraversal(BT);

    FreeBinTree(BT);

    return 0;
}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论