606. 根据二叉树创建字符串

606. 根据二叉树创建字符串


C代码:二叉树

c 复制代码
char* str;
int top;

// 录入子节点前加(
void dfs (struct TreeNode* root) {
    if (root == NULL) {
        return;
    }
    str[top++] = '(';
    // top += sprintf(str + strlen(str), "%d", root->val); // strlen(str)错误,因为后续添加了')', 没有添加'\0';
    top += sprintf(str + top, "%d", root->val);
    if (root->left == NULL && root->right != NULL) {
        str[top++] = '(';
        str[top++] = ')';
    }
    dfs(root->left);
    dfs(root->right);
    str[top++] = ')';
}

char * tree2str(struct TreeNode* root){
    if (root == NULL){ 
        return NULL;
    }
    str = (char*)malloc(sizeof(char) * 30000);
    top = 0;
    dfs(root);
    str[strlen(str)] = '\0';  // (1(2(4))(3))

    char* ans = (char*)malloc(sizeof(char) * top);  // 处理细节
    for (int i = 1; i < top - 1; ++i) {
        ans[i - 1] = str[i];
    }
    ans[top-2] = '\0';
    return ans;
}
相关推荐
Dontla1 小时前
Rust泛型系统类型推导原理(Rust类型推导、泛型类型推导、泛型推导)为什么在某些情况必须手动添加泛型特征约束?(泛型trait约束)
开发语言·算法·rust
Ttang231 小时前
Leetcode:118. 杨辉三角——Java数学法求解
算法·leetcode
喜欢打篮球的普通人1 小时前
rust模式和匹配
java·算法·rust
java小吕布1 小时前
Java中的排序算法:探索与比较
java·后端·算法·排序算法
杜若南星2 小时前
保研考研机试攻略(满分篇):第二章——满分之路上(1)
数据结构·c++·经验分享·笔记·考研·算法·贪心算法
路遇晚风2 小时前
力扣=Mysql-3322- 英超积分榜排名 III(中等)
mysql·算法·leetcode·职场和发展
Neophyte06082 小时前
C++算法练习-day40——617.合并二叉树
开发语言·c++·算法
木向2 小时前
leetcode104:二叉树的最大深度
算法·leetcode
一个不喜欢and不会代码的码农2 小时前
力扣113:路径总和II
算法·leetcode