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

博客围绕LeetCode相关内容,聚焦递归和括号相关问题,虽未给出具体内容,但可知是信息技术领域算法方面探讨,递归是重要算法思想,括号问题常出现在算法题中。

在这里插入图片描述
在这里插入图片描述

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public String tree2str(TreeNode t) {
        if (t==null)
            return "";
        if (t.left==null && t.right==null)
            return t.val+"";
        else if (t.left==null)
            return t.val+"()"+"("+tree2str(t.right)+")";
        else if(t.right==null)
            return t.val+"("+tree2str(t.left)+")";
        return  t.val+"("+tree2str(t.left)+")"+"("+tree2str(t.right)+")";
    }
}

在这里插入图片描述

创建一个二叉树根据输入的字符串(通常是前序遍历或中序遍历形式)来构建,可以使用递归的方法。这里我们假设输入的是一个格分隔的字符序列,代表二叉树的节点值。 首先,我们需要定义一个简单的二叉树结构,包含左子节点、右子节点和值: ```c typedef struct TreeNode { char data; struct TreeNode *left; struct TreeNode *right; } TreeNode; ``` 然后我们可以编写一个函数来根据字符串构建二叉树。这里我们假设输入字符串是以格分隔的字符序列,例如 "A B C D E F G",表示一个深度为3的树,其中 A 是根节点,B, C 在其左,D, E 在其右,F 在 B 的左,G 在 C 的左。 ```c TreeNode* buildTree(char* str) { // 如果字符串或第一个字符格,则返回NULL if (!str || str[0] == ' ') return NULL; // 获取当前节点的值 TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode)); node->data = str[0]; // 分割字符串,找到下一个位置 int i = 1; while (str[i] != '\0' && str[i] == ' ') i++; // 遍历到下一个格 // 递归创建左右子树 node->left = buildTree(&str[i]); // 左子树 node->right = buildTree(&str[i + 1]); // 右子树 return node; } ``` 这个函数的工作原理是,每次从输入字符串中提取一个字符作为根节点的数据,然后跳过剩余的格,接着对剩余部分递归调用自身,直到遇到没有更多字符的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值