力扣 105. 从前序与中序遍历序列构造二叉树

news/2024/12/22 13:57:50/

题目来源:https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/

 

 C++题解:前序遍历是中左右,中序遍历是左中右,所以拿到两个遍历数组,我们可以从前序遍历首节点获取中间节点,再通过中间节点在中序遍历的索引,可以将中序遍历的左右子树分割开,根据左子树的长度也可以将前序遍历的左右子树分割开。

进行遍历时,我们需要分别找到左右子树,所以每次遍历,都需要单独获取左子树的前序和中序遍历数组、右子树的前序和中序遍历数组。当无左右子树时,返回空指针;当左右子树为叶子节点时,返回当前节点。

/*** 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) {int len = preorder.size();if(len == 0) return nullptr;TreeNode* root = new TreeNode(preorder[0]);if(len == 1) return root;int ind = find(inorder.begin(), inorder.end(), preorder[0]) - inorder.begin();vector<int> lepre(preorder.begin() + 1, preorder.begin() + ind + 1);vector<int> lein(inorder.begin(), inorder.begin() + ind);root->left = buildTree(lepre, lein);vector<int> ripre(preorder.begin() + ind + 1, preorder.end());vector<int> riin(inorder.begin() + ind + 1, inorder.end());root->right = buildTree(ripre, riin);return root;}
};


http://www.ppmy.cn/news/658102.html

相关文章

电脑突然找不到蓝牙开关了

电脑突然找不到蓝牙开关了&#xff0c;无法打开蓝牙。并且在设备管理器中找不到蓝牙&#xff0c;但点击 查看——>隐藏设备 可以找到蓝牙。试了好些方法&#xff0c;都不行&#xff0c;后来直接重新安装蓝牙驱动后重启电脑就好了。 下载蓝牙驱动的inter网址&#xff1a;htt…

电脑蓝牙已关闭,蓝牙开关不见的故障排除

电脑蓝牙已关闭&#xff0c;蓝牙开关不见的故障排除 今天突然发现自己的蓝牙鼠标不能用了&#xff0c;打开蓝牙设置&#xff0c;然后惊奇发现连蓝牙开关的按钮都不见了。并且查看了设备管理器&#xff0c;蓝牙也不见了。后来打电话给Dell的客服&#xff0c;使用了以下方法解决了…

linux蓝牙鼠标唤醒电脑,蓝牙鼠标唤醒电脑,蓝牙鼠标怎么设置唤醒电脑

win10系统如何禁止蓝牙鼠标唤醒电脑&#xff1f;相信使用蓝牙鼠标的用户都会有这样的烦恼&#xff0c;在电脑睡眠后随便碰一下鼠标都会唤醒电脑的现象&#xff0c;反应也太迅速了&#xff01;网上的教程都是有线鼠标关闭电源唤醒的方法&#xff0c;但是设备管理器中查看&#x…

计算机蓝牙功能,笔记本电脑蓝牙在哪里?笔记本怎么打开蓝牙功能Bluetooth

笔记本蓝牙在哪里打开&#xff1f;蓝牙是一种短距离通信技术&#xff0c;蓝牙耳机或者蓝牙传输都需要打开蓝牙功能。笔记本电脑一般内置蓝牙功能&#xff0c;有些电脑默认关闭或被某些程序禁用&#xff0c;那么笔记本要怎么打开蓝牙呢&#xff1f;现在使用win7或win10的用户比较…

蓝牙计算机操作与设置在哪里,win7电脑蓝牙在哪里打开_win7笔记本怎么开蓝牙

win7电脑蓝牙在哪里打开&#xff1f;win7笔记本怎么开蓝牙&#xff1f;蓝牙是一种提升用户效率的技术&#xff0c;让我们不管是传输文件或者是通话都能变得更加方便&#xff0c;但有些用户的问题是不知道win7蓝牙在哪里打开&#xff0c;毕竟我们对电脑系统不会接触太深&#xf…

笔记本电脑计算机管理在哪,笔记本电脑蓝牙在哪里开_如何在笔记本上打开蓝牙-win7之家...

我们如果要在电脑中使用蓝牙耳机或者进行蓝牙传输时&#xff0c;都是要打开蓝牙功能才可以的&#xff0c;在笔记本电脑中&#xff0c;通常内置有蓝牙功能&#xff0c;默认是关闭的需要我们手动开启&#xff0c;那么如何在笔记本上打开蓝牙呢&#xff1f;针对这个问题&#xff0…

计算机开启蓝牙网络,电脑蓝牙怎么开?

原创电脑蓝牙怎么开&#xff1f; 编辑:小葫芦 来源:PC下载网时间:2018-06-22 10:25:07 很少人知道电脑中也是有蓝牙的&#xff0c;那么电脑蓝牙到底该如何开启&#xff1f; 1.蓝牙是大家日常生活中经常用到的功能&#xff0c;一般情况下都在手机上使用&#xff0c;其实电脑也是…

【win10】电脑蓝牙开关找不到了的解决方法

win10电脑蓝牙开关找不到了的解决方法 本人电脑联想小新win10&#xff0c;在正常使用蓝牙鼠标时突然出现问题&#xff0c;查找后发现是蓝牙出现问题&#xff0c;使用了网络上的几种通用方法后&#xff0c;最后询问客服后&#xff0c;进入BISO才解决&#xff0c;现将尝试的方法…