华中尔科技大机试 二叉树遍历 Easy *两序列构建二叉树

Posted songlinxuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华中尔科技大机试 二叉树遍历 Easy *两序列构建二叉树相关的知识,希望对你有一定的参考价值。

基本思想:

要求用两个序列构建新的二叉树,标准写法,注意下;

 

关键点:

无;

 

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
using namespace std;

string s1, s2;

struct node {
    char data;
    node* left;
    node* right;
};

node* charge(int l1, int r1, int l2, int r2) {
    if (l1 > r1)
        return NULL;
    int index = -1;
    for (int i = l2; i <= r2; i++) {
        if (s2[i] == s1[l1])
            index = i;
    }
    node* no = new node;
    no->data = s1[l1];
    no->left = charge(l1+1,l1+index-l2,l2,index-1);
    no->right = charge(l1+index-l2+1,r1,index+1,r2);
    return no;
}

void postorder(node* root) {
    if (root == NULL)
        return;
    postorder(root->left);
    postorder(root->right);
    cout << root->data;
}

int main() {
    while (cin >> s1>> s2) {
        node* root = charge(0, s1.size() - 1, 0, s2.size() - 1);
        postorder(root);
        cout << endl;
    }
    return 0;
}

 

以上是关于华中尔科技大机试 二叉树遍历 Easy *两序列构建二叉树的主要内容,如果未能解决你的问题,请参考以下文章

华中科技大学机试 二叉排序树 Easy

浙江大学机试 二叉搜索树 Easy *考点:两个遍历序列确定一棵子树

新2023Q2模拟题JAVA华为OD机试 - 二叉树层次遍历

华为OD机试真题 Python 实现二叉树的广度优先遍历

华为机试真题 C++ 实现完全二叉树非叶子部分后序遍历

华为机试真题 Java 实现完全二叉树非叶子部分后序遍历