题解 | #二叉树遍历#

二叉树遍历

https://www.nowcoder.com/practice/6e732a9632bc4d12b442469aed7fe9ce

#include <iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
typedef struct Binode {
    char data;
    struct Binode* lnode;
    struct Binode* rnode;
    Binode(char c): data(c), lnode(NULL), rnode{NULL} {}
};
Binode* midVisit(string prestr, string midstr) {

    if (prestr.size() == 0) return NULL;
    char root = prestr[0];
//    cout<<"\n当前根节点为:"<<root;

    Binode* b = new Binode(root);
    int position = midstr.find(root);
    b->lnode = midVisit(prestr.substr(1, position), midstr.substr(0, position));
    b->rnode = midVisit(prestr.substr(position + 1),
                        midstr.substr(position +
                                      1)); //敲成midstr.substr(position)会闪退,因为substr找不到对应的position
//                string mid1="                            ";
//                string mid2="                            ";
//                for(int j=0;j<i;j++){
//                   if(midstr[j]==NULL||midstr[j]==' ') break;
//                     mid1[j]=midstr[j];
//
//                }
//                cout<<"\n左字符串为"<<mid1;
//                b->lnode= midVisit(prestr,mid1,pos);
//                for(int k=i+1,m=0;k<midstr.size();k++,m++){
//                    if(midstr[k]==NULL||midstr[k]==' ') break;
//
//                    mid2[m]=midstr[k];
//                }
//                 cout<<"\n右字符串为"<<mid2;
//                   b->rnode= midVisit(prestr,mid2,pos);
    return b;
}

//后续遍历
void lastVist(Binode* b) {
    if (b == NULL) return;
    lastVist(b->lnode);
    lastVist(b->rnode);
    cout << b->data;
}
int main() {
    string strpre, strmid;
    while (cin >> strpre >> strmid) {
        //遍历前序,找根
        Binode* res = midVisit(strpre, strmid);
        lastVist(res);
//        string strtest="kkkkk";
//        int testpos=strtest.find('a');
//        string strtestres=strtest.substr(testpos);//闪退
    }
    return 0;
}

全部评论

相关推荐

头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务