7-1 二叉树遍历应用

读入用户输入的一串字符串,将字符串按照先序遍历建立一个二叉树。 其中“#”表示的是空格,代表空树。再对建立好的二叉树进行中序遍历,输出遍历结果。

#include<iostream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

typedef struct BiTNode
{
    char data;
    struct BiTNode  *lchild,*rchild;
}BitNode;

BitNode* creatTree(char* str , int *idx)
{
    if(str[*idx] != '#')
    {
        BiTNode* root = (BiTNode*)malloc(sizeof(BitNode));
        root->data = str[*idx];
        ++(*idx);
        root->lchild = creatTree(str , idx);
        ++(*idx);
        root->rchild = creatTree(str , idx);
        return root;
    }
    else{
        return NULL;
    }
}
void MidPrint(BiTNode *root)
{
    if(root)
    {
        MidPrint(root->lchild);
        cout<<root->data<<" ";
        MidPrint(root->rchild);
    }
}
int main()
{
    char str[101] = {0};
    scanf("%s", str);
    int idx = 0;
    
    BiTNode* root = creatTree(str , &idx);
    MidPrint(root);
    cout<<endl;
    return 0;
}

 

posted @ 2022-10-24 23:54  旺旺大菠萝  阅读(40)  评论(0编辑  收藏  举报