力扣刷题——根据二叉树创建字符串

根据给定的二叉树,利用前序遍历将其转化为一个包含括号和整数的字符串。空节点用'()'表示,并遵循规则省略不影响映射关系的空括号对。解析题目要求,通过递归实现字符串的构建。

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

根据二叉树创建字符串

题目链接:根据二叉树创建字符串

题目描述

给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。

空节点使用一对空括号对 “()” 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
在这里插入图片描述

题目分析

根据题意,这里需要将二叉树的各个节点的值按照前序遍历的方式,转化为一个字符串。其中如果某个节点为空,则需要用()空括号表示。如果右子树为空则空括号可以省略,左子树为空但是右子树不为空则括号不能省略。
于是,代码我们可以先创建一个string类型的字符串来存放返回值,然后采用递归的方式,根据前序遍历——根、左、右的顺序递归形成字符串。具体代码实现如下:

代码实现

void _tree2str(TreeNode* root, string& str)
{
	if (root == nullptr)
	{
		return;
	}
	str += to_string(root->val);
	if (root->left || root->right)
	{
		str += '(';
		_tree2str(root->left, str);
		str += ')';
	}
	if (root->right)
	{
		str += '(';
		_tree2str(root->right, str);
		str += ')';
	}

}


string tree2str(TreeNode* root) 
{
	string ret;
	_tree2str(root, ret);
	return ret;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值