当前位置: 代码迷 >> 综合 >> Leetcode 1028. 从先序遍历还原二叉树(DAY 21)(划开新时代 Hard第一题 Hard含题解)
  详细解决方案

Leetcode 1028. 从先序遍历还原二叉树(DAY 21)(划开新时代 Hard第一题 Hard含题解)

热度:10   发布时间:2023-11-17 20:24:52.0

原题题目

在这里插入图片描述



代码实现(有全局变量 绝大部分自解 极小部分看解)

/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*///记录字符串暂时位置
int pos;struct TreeNode* helper(char* S,struct TreeNode* root,int level)
{
    int templevel = 0,number = 0;while(S[pos] == '-' && S[pos] != NULL) //计算当前层数{
    templevel++;pos++;}if(!S[pos] || level != templevel){
    //对于不符合层数条件则说明 字符串已提前移位//则需要回到之前位置 减回去if(level != templevel)pos -=templevel;return NULL;}//ASCII码值只能表示0-9 对于两位数及以上则只能以下面方式计算while(S[pos] >= '0' && S[pos] <= '9')number = number*10 + S[pos++] - '0';root = (struct TreeNode*)malloc(sizeof(struct TreeNode));root->val = number;//赋值root->left = helper(S,root->left,level+1);//递归得到左右子树root->right = helper(S,root->right,level+1);//递归得到左右子树return root;
}struct TreeNode* recoverFromPreorder(char * S){
    if(!strlen(S))return NULL;pos = 0;//初始化全局变量struct TreeNode* root = helper(S,root,0);return root;
}


闲谈

对于每道Leetcode Hard都打算写题解了
最近在准备期末考试
比如线代 0基础到2天网课 奇迹冲完
比如高数 也是只有2天时间 学完hhhh
真的是挑战极限哈
结果发现计算机导论
感谢曾经的自己学过 汇编 和部分的CSAPP
对于考的很难的导论 自己复习起来也并没有像其他同学那么吃力
还甚至当了波小老师hhhh
所以最近做题的速度就慢了很多 寒假希望图书馆还会开门
然后就可以安心补上进度了嗷

在这里插入图片描述