栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++数据结构第二次课第一题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++数据结构第二次课第一题

 给你一个满二叉树的层次遍历序列,请编程输出该二叉树的前序遍历序列.

#include
#include
#include
using namespace std;
struct TreeNode {
    string val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(string val) {
        this->val = val;
        this->left = this->right = NULL;
    }
};
void preOrder(TreeNode *root)
{
    if (!root)
    {
        return;
    }
    cout << root->val;
    preOrder(root->left);
    preOrder(root->right);
}
 
int main()
{
    int n;
    cin >> n;
    string node_val;
    vector node_vec;
    for (int i = 0; i < n; i++)
    {
        cin >> node_val;
        node_vec.push_back(node_val);
    }
    int i = 0;
    TreeNode* root = new TreeNode(node_vec[i]);
    i++;
    vector list;
    list.push_back(root);
    TreeNode *cur;
    TreeNode* node;
    while (list.size()!=0 && i<=n-1)
    {
        cur = list[0];
        list.erase(list.begin());
        if (node_vec[i]=="#")
        {
            cur->left = NULL;
        }
        else
        {
            node = new TreeNode(node_vec[i]);
            cur->left = node;
            list.push_back(cur->left);
        }
        
        if (node_vec[i+1] == "#")
        {
            cur->right = NULL;
        }
        else
        {
            node = new TreeNode(node_vec[i + 1]);
            cur->right = node;
            list.push_back(cur->right);
        }
        
        i=i+2;
    }

    preOrder(root);
 
}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号