LeetCode #536. Construct Binary Tree from String

本文介绍了一种从包含括号和整数的字符串中构建二叉树的方法。通过解析输入字符串,创建二叉树节点,并根据括号的配对确定左右子树,实现了字符串到二叉树的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

You need to construct a binary tree from a string consisting of parenthesis and integers.

The whole input represents a binary tree. It contains an integer followed by zero, one or two pairs of parenthesis. The integer represents the root's value and a pair of parenthesis contains a child binary tree with the same structure.

You always start to construct the left child node of the parent first if it exists.

Example:

Input: "4(2(3)(1))(6(5))"
Output: return the tree root node representing the following tree:

       4
     /   \
    2     6
   / \   / 
  3   1 5   

Note:

  1. There will only be '('')''-' and '0' ~ '9' in the input string.
  2. An empty tree is represented by "" instead of "()".
class Solution {
public:
    TreeNode* str2tree(string s) {
        if(s=="") return NULL;
        int i=0;
        while(i<s.size()&&((s[i]>='0'&&s[i]<='9')||s[i]=='-')) i++;
        TreeNode* node=new TreeNode(stoi(s.substr(0,i)));
        s=s.substr(i);
        if(s=="") return node;
        
        int left_count=0;
        int j=0;
        while(j<s.size())
        {
            if(s[j]=='(') left_count++;
            else if(s[j]==')') left_count--;
            if(left_count==0) break;
            j++;
        }
        node->left=str2tree(s.substr(1,j-1));
        s=s.substr(j+1);
        if(s=="") return node;
        
        node->right=str2tree(s.substr(1,s.size()-2));
        return node;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值