C++创建二叉树

来源:互联网 发布:军人网络保密自查自纠 编辑:程序博客网 时间:2024/06/05 19:31

从网上爬来的,加了自己的注释,万一忘了自己可以看一看。

#include <iostream>using namespace std;struct BiTNode{    char data;    struct BiTNode* lchild,* rchild; // 左右孩子};void CreatBiTree(BiTNode* &T){ // 先序递归创建二叉树    // 先按顺序驶入二叉树中节点的值(一个字符),空格字符代表空树    char ch;    for (int j = 0; j < 13; ++j) {        if((ch=getchar()) == '#') // getchar() 为逐个读入标准库函数            T = NULL;        else{            T = new BiTNode; // 产生新的子树            T->data = ch; // 由getchar()逐个读进来            CreatBiTree(T->lchild); // 递归创建左子树            CreatBiTree(T->rchild); // 递归创建右子树        }    }}void PreOrderTraverse(BiTNode* &T){ // 先序遍历二叉树    if(T){ // 当节点不为空时执行        cout << T->data;        PreOrderTraverse(T->lchild);        PreOrderTraverse(T->rchild);    }    else        cout << "";}void Inoder(BiTNode* &T){ // 中序遍历二叉树    if(T){        Inoder(T->lchild);        cout << T->data;        Inoder(T->rchild);    }    else        cout << "";}void Posoder(BiTNode* &T){ // 中序遍历二叉树    if(T){        Posoder(T->lchild);        Posoder(T->rchild);        cout << T->data;    }    else        cout << "";}int main(){    cout << "创建一颗二叉树,其中A~Z字符代表树的数据,用'#'表示空树:" << endl;    BiTNode* T;    CreatBiTree(T);    cout << "先序递归遍历" << endl;    PreOrderTraverse(T);    cout << "中序递归遍历" << endl;    Inoder(T);    cout << "后序递归遍历" << endl;    Posoder(T);    return 1;}


0 0
原创粉丝点击