根据前中序列构造二叉树

力扣题目

图示分析

代码实现

C语言代码实现:

cpp 复制代码
//构造树
struct TreeNode* buildTree(int* p, int pSize, int* in, int inSize){
    return CreatTree(p,in,0,0,pSize-1);
}
struct TreeNode*CreatTree(int*p,int*in,int index,int left,int right)
{
    //在left到right的范围内构造树,p为前序数组,in为中序数组,index为待构建根在前序p中下标
    if(left>right)
    	return NULL;
    
    //创建根节点
    struct TreeNode*root=(struct TreeNode*)malloc(sizeof(struct TreeNode));
    root->val=p[index];
    root->left=NULL;
    root->right=NULL;
    
    //找到根节点在中序in中的位置pos,找pos的目的一是为了找到右孩子,而是为了划分构建返回
    int pos=left;
    while(left<right&&p[index]!=in[pos])
    {
        pos++;
    }
    
    root->left=CreatTree(p,in,index+1,left,pos-1);//连接左孩子,并构造左侧区域子树
    root->right=CreatTree(p,in,pos+1-left+index,pos+1,right);//连接右孩子,并构造右侧区域子树
    
    return root;
}
相关推荐
C雨后彩虹4 分钟前
5G网络建设
java·数据结构·算法·华为·面试
机器学习之心6 分钟前
最小二乘支持向量机(LSSVM)结合遗传算法(GA)解决单目标优化问题,MATLAB代码
算法·支持向量机·matlab·单目标优化问题
没有故事的Zhang同学22 分钟前
09-🔍数据结构与算法核心知识 | 二叉搜索树:有序数据结构理论与实践
算法
不穿格子的程序员1 小时前
从零开始写算法——二叉树篇3:对称二叉树 + 二叉树直径
算法
蒲小英2 小时前
算法-使用技巧
算法
0x7F7F7F7F2 小时前
数学知识——博弈论
数学·算法
爱学习的小仙女!2 小时前
顺序表定义、特点和基本操作(含C代码详细讲解)及时间复杂度
数据结构·算法
芥子沫2 小时前
《人工智能基础》[算法篇5]:SVM算法解析
人工智能·算法·机器学习·支持向量机·svm
BigerBang2 小时前
LoRA 全方位指南:从底层原理到 Qwen-Image-Edit 实战
人工智能·pytorch·深度学习·算法
passxgx3 小时前
11.3 迭代法和预条件子
线性代数·算法·矩阵