文章

6

粉丝

84

获赞

0

访问

3.8k

头像
二叉树遍历 题解:大佬,帮我看看,我这个怎么不对啊。
P1161 清华大学/南京大学2018机试题
发布于2024年3月24日 14:34
阅读数 661

#include<bits/stdc++.h>
using namespace std;
#

typedef struct node{
    char data;
    struct node *lchild,*rchild;
}*BitTree;

string arr;
int len;
void CreatBitTree(BitTree &T){
    if(len>=arr.length()) return;
    char data=arr[len++];
    if(data=='#') T=NULL;
    else {
            T=new node;
            T->data=data;
            CreatBitTree(T->lchild);
            CreatBitTree(T->rchild);
    }
}

void InOrderTraverse(BitTree T){
    if(T!=NULL){
        InOrderTraverse(T->lchild);
        cout<<T->data<<' ';
        I...

登录查看完整内容


登录后发布评论

2 条评论
张会老儿
2024年3月24日 14:48

我敲,解决了。len一开始是全局变量,不小心在main里面又定义了一次len。可是我不明白,我调用CreatBitTree的时候都是在main里面调用的,那应该用到的都是mian里面的len啊,而这个len虽然是每次都重新定义。可是都是置为0,这和使用全局变量不是一样的吗。为啥是这里错呢

赞(0)

snake : 回复 张会老儿: 全局变量和局部变量的作用域不一样,如果重复局部变量优先级高,但是你这个CreatBitTree里面没有定义len,所以用的是全局的len,而main里len只在函数内生效,在其他函数里不生效。

2024年3月24日 17:50