文章

55

粉丝

57

获赞

11

访问

10.9k

头像
二叉树遍历 题解:c++
P1161 清华大学/南京大学2018机试题
发布于2024年3月10日 00:38
阅读数 628

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

string str;
int len;
typedef struct BitNode{
    int data;
    struct BitNode *lchild,*rchild;
}BitNode,*BiTree;

//输入需要按照先序序列的遍历序列将值依次输入建树,若某个孩子值为空就输入99来代替
//输入的数据一定要符合一颗二叉树的定义,不然一直递归
BiTree create(BiTree &T){
    if(len>=str.length()) return NULL;
    char data = str[len++];
    if(data!='#'){
        T = (BiTree) malloc(sizeof(BitNode));
        T->data = data;
        T->lchild = NULL;//将左右两个指针置空防止脏地址
        T->rchild = NULL;
        T->lchild = create(T->lchild);
        T->rchild = create(T->rchild);
    }
    return T;
}

//中序遍历
void InOrder(BiTree &T){
    if(T!=NULL){
        InOrder(T->lchild);
        printf("%c ",T->data);
        InOrder(T->rchild);
    }
}

int main(){
    while(cin>>str){
        len = 0;
        BiTree T;
        BiTree tree = create(T);
    ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发