zoukankan      html  css  js  c++  java
  • 【leetcode】105. 从前序与中序遍历序列构造二叉树

    struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize){
        if(preorderSize==0 || inorderSize==0)
            return NULL;
        struct TreeNode** stArr=(struct TreeNode**)calloc(preorderSize,sizeof(struct TreeNode*));
        int top=-1, pPst=0, iPst=0, flag=iPst;
        struct TreeNode* root=(struct TreeNode*)calloc(1,sizeof(struct TreeNode));
        struct TreeNode* temp=root;
        root->val=preorder[pPst++];
        stArr[++top]=root;
        while(pPst<preorderSize && iPst<inorderSize){            
            while(top>=0 && stArr[top]->val == inorder[iPst]){
                temp=stArr[top--];
                iPst++;
            }
            struct TreeNode* node=(struct TreeNode*)calloc(1,sizeof(struct TreeNode));
            node->val=preorder[pPst++];
            stArr[++top]=node;
            if(flag != iPst)
                temp->right=node;
            else
                temp->left=node;
            temp=node;
            flag=iPst;
        }
        return root;
    }
  • 相关阅读:
    DRF简易了解
    Restful API接口规范
    Python分页
    vue笔记(一)
    CNN实现手写数字识别
    深度学习框架Keras
    NLP自然语言处理
    深度学习框架Tensorflow
    维度的区分
    矩阵求导
  • 原文地址:https://www.cnblogs.com/ganxiang/p/14145253.html
Copyright © 2011-2022 走看看