题解 | #二叉树遍历#

二叉树遍历

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

#include<iostream>
#include<string>
using namespace std;

/*
    递归思想,先将当前左右序列进行分割,然后在进行当前左右序列的递归,输出当前最后一个元素
*/
void postOrder(string& preorder, string& midorder) {
    if (preorder.size() == 0) {
        return;
    }
    char root = preorder[0];
    int rootIndex = midorder.find(root);
    string leftPre = preorder.substr(1, rootIndex);
    string rightPre = preorder.substr(rootIndex + 1);
    string leftMid = midorder.substr(0, rootIndex);
    string rightMid = midorder.substr(rootIndex + 1);
    postOrder(leftPre, leftMid);
    postOrder(rightPre, rightMid);
    cout << root;
}

int main() {
    string preOrder, midOrder;
    while (cin >> preOrder >> midOrder) {
        postOrder(preOrder, midOrder);
        cout << endl;
    }
    return 0;
}

全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务