当前位置: 首页 > article >正文

树和二叉树_6

树和二叉树_6

  • 一、leetcode-105
  • 二、题解
    • 1.引库
    • 2.代码


一、leetcode-105

从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。
请添加图片描述
样例输入:preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]

样例输出: [3,9,20,null,null,15,7]


二、题解

1.引库

 #include <iostream>
 #include <cstdio>
 #include <cstdlib>
 #include <queue>
 #include <stack>
 #include <algorithm>
 #include <string>
 #include <map>
 #include <set>
 #include <vector>
 using namespace std;
 

2.代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        if(preorder.size()==0) return NULL;
        int pos=0,n=preorder.size();
        while(inorder[pos]!=preorder[0]) pos++;
        TreeNode *root=new TreeNode(preorder[0]);
        vector<int> preArr,inArr;
        for(int i=1;i<=pos;i++) preArr.push_back(preorder[i]);
        for(int i=0;i<pos;i++) inArr.push_back(inorder[i]);
        root->left=buildTree(preArr,inArr);
        preArr.clear(),inArr.clear();
        for(int i=pos+1;i<n;i++) preArr.push_back(preorder[i]);
        for(int i=pos+1;i<n;i++) inArr.push_back(inorder[i]);
        root->right=buildTree(preArr,inArr);
        return root;
    }
};



http://www.kler.cn/a/537986.html

相关文章:

  • 青少年编程与数学 02-009 Django 5 Web 编程 03课题、项目结构
  • 模型压缩 --学习记录2
  • 小红书提出新面部视频交换方法DynamicFace,可生成高质量且一致的视频面部图像。
  • android中关于CheckBox自定义选中图片选中无效问题
  • mybatis 是否支持延迟加载?延迟加载的原理是什么?
  • 国产化创新 守护开放边界网络安全
  • Java序列化与反序列化:原理、实践与陷阱
  • Swift语言的云计算
  • 混合专家模型(MoE)概述:智能计算的新范式
  • Redis --- 使用HyperLogLog实现UV(访客量)
  • B树详解及其C语言实现
  • java 读取sq3所有表数据到objectNode
  • 使用TensorFlow和Keras构建卷积神经网络:图像分类实战指南
  • Maven插件—代码规范格式化spotless-maven-plugin
  • 记录虚拟机安装银河麒麟V10系统中遇到的一些问题
  • 深度学习和机器学习的区别|自注意力机制和多头注意力机制的展示|售前面试题
  • 从长尾关键词到页面优化,打造完整的SEO策略
  • 泛微OA E-Cology /messager/users.data 信息泄漏漏洞
  • Java 一键将 Word 文档转为 PDF
  • Open3d Qt的环境配置
  • DeepSeek-R1 云环境搭建部署流程
  • Vue笔记(四)
  • neo4j-解决导入数据后出现:Database ‘xxxx‘ is unavailable. Run :sysinfo for more info.
  • 仅128个token达到ImageNet生成SOTA性能!MAETok:有效的扩散模型的关键是什么?(卡内基梅隆港大等)
  • STM32系统架构介绍
  • Swift语言的面向对象编程