【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; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步