原题题目
代码实现(有全局变量 绝大部分自解 极小部分看解)
/*** 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
所以最近做题的速度就慢了很多 寒假希望图书馆还会开门
然后就可以安心补上进度了嗷