文章

8

粉丝

14

获赞

7

访问

639

头像
二叉树遍历 题解:
P1161 清华大学/南京大学2018机试题
发布于2025年1月14日 20:39
阅读数 140

为何这么写,测试用例可以在本地ide正确运行,但是在平台上现实runtime,没有检查出问题,求解答

#include<bits/stdc++.h>

using namespace std;

struct btnode{
    char data;
    btnode* lchild;
    btnode* rchild;
};
string s;
int len;
btnode* create(){
    char c;
    c = s[len++];
    if(c == '#') return nullptr;
    btnode *head = new btnode;
    head->data = c;
    btnode *l = create();
    btnode *r = create();
    head->lchild = l;
    head->rchild = r;
    return head;
}

void inordertraverse(btnode *T){
    if(T != nullptr){
        inordertraverse(T->lchild);
        cout<<T->data<<" ";
        inordertraverse(T->rchild);
    }
}

int main(){
    while(cin>>s){
        len = 0;
        btnode *head = create();
        inordertraverse(head);
        cout<<endl;
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

2 条评论
快乐小土狗
2025年1月14日 23:11

if(c == '#') return nullptr;

改为

if(c == '#' || len > s.length()) return nullptr;

防止越界

赞(1)

zcq107 : 回复 快乐小土狗: 欸可以了,万分感谢您

2025年1月14日 23:30