首页 > 其他分享 >重建二叉树

重建二叉树

时间:2023-03-13 10:55:06浏览次数:45  
标签:preorder bulid TreeNode int 二叉树 l1 inorder 重建

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* bulid(vector<int>& preorder,int l1,int r1,vector<int>& inorder,int l2,int r2)
    {
        if(l1>r1)   return NULL;
        int root=preorder[l1];
        int idx=-1;
        for (int i = l2; i <= r2; i ++ )
            if(inorder[i]==root)
            {
                idx=i;
                break;
            }
        TreeNode* t=new TreeNode(root);
        int len=idx-l2;//左子树长度
        t->left=bulid(preorder,l1+1,l1+len,inorder,l2,idx-1);
        t->right=bulid(preorder,l1+len+1,r1,inorder,idx+1,r2);
        return t;
    }
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        TreeNode* root=bulid(preorder,0,preorder.size()-1,inorder,0,preorder.size()-1);
        return root;
    }
};

标签:preorder,bulid,TreeNode,int,二叉树,l1,inorder,重建
From: https://www.cnblogs.com/tangxibomb/p/17210588.html

相关文章

  • 二叉树、B树、B*树、AVL树... 这么多树你真的搞清楚了吗?
    经常在面试或者平时工作中,我们都会听到类似的树,类似于二叉树、B树、B*树、AVL树等等,很多情况下可能对他们都是只有一知半解。今天我总结了所有常见的树的原理,深入浅出的分......
  • P2015 二叉苹果树 二叉树dp
    P2015二叉苹果树-洛谷|计算机科学教育新生态(luogu.com.cn)这道题之所以可以不用背包树形的原因是:它一个经典二叉树dp问题令son[x][0]为x的左儿子,son[x][1]为x的右......
  • 【洛谷】P3365 改造二叉树(LIS)
    原题链接题意给定一颗二叉树,每次操作可以修改一个点的权值为任意整数,求将原树变为二叉搜索树的最小操作次数。注意:本题中的二叉搜索树定义为:每个左边儿子的权值都严格小......
  • 二叉树的遍历
    1.二叉树的定义二叉树的每个节点包含指向其左、右子节点的指针,我们假设二叉树中保存的值为int型,那么节点的定义如下:structBinaryTreeNode{ intvalue; BinaryTreeNo......
  • 【DFS】LeetCode 剑指 Offer 07. 重建二叉树
    题目链接剑指Offer07.重建二叉树思路递归建树,思路与【DFS】LeetCode105.从前序与中序遍历序列构造二叉树相同。代码classSolution{publicTreeNodebuild......
  • LeetCode 105. 从前序与中序遍历序列构造二叉树
    原题解题目约束题解解法一classSolution{private:unordered_map<int,int>index;public:TreeNode*myBuildTree(constvector<int>&preorder......
  • CT三维重建是什么? --九五小庞
    CT三维重建是进行CT检查后,使用电脑进行的后处理,本身并不是一种检查手段。一般通过CT扫描保存的图像获得数据,在后处理重建冠状位、矢状位和轴位图像,常应用于骨骼病变、CTA血......
  • 力扣简617 合并二叉树
    一遍过欸但是没捋清楚所以写了好半天不过运行速度很差我发现我只会广度优先这题深度憨简单   classSolution{publicTreeNodemergeTrees(TreeNoder......
  • 二叉树的中序遍历
    1.图的中序遍历classTreeNode{  intval;  TreeNodeleft;  TreeNoderight;  TreeNode(){};  TreeNode(intval){this.val=val;}  Tre......
  • 算法随想Day31【贪心算法】| LC860-柠檬水找零、LC406-根据身高重建队列、LC452-用最
    LC860.柠檬水找零boollemonadeChange(vector<int>&bills){intC5=0,C10=0;for(inti=0;i<bills.size();++i){if(bills[i]==5......