根據二叉樹創建字符串(LeetCode簡單篇606題)

你需要採用前序遍歷的方式,將一個二叉樹轉換成一個由括號和整數組成的字符串。

空節點則用一對空括號 “()” 表示。而且你需要省略所有不影響字符串與原始二叉樹之間的一對一映射關係的空括號對。
在這裏插入圖片描述

void _tree2str(struct TreeNode* t,char* str)
{
	if(t == NULL)
		return ;
		
	char buff[12];//12是數字的位數,編譯器最大應該就到12
    sprintf(buff,"%d",t->val);
    strcat(str,buff);
    //左子樹
	if(t->left == NULL)
	{
		if(t->right == NULL)
			return ;
		else
			strcat(str,"()");
	}
	else
	{
		strcat(str,"(");
		_tree2str(t->left,str);
		strcat(str,")");
	}
	//右子樹
	if(t->right == NULL)
	{
		return ;
	}
	else
	{
		strcat(str,"(");
		_tree2str(t->right,str);
		strcat(str,")");
	}
}
char* tree2str(struct TreeNode* t)
{
	char* str = (char*)malloc(1024*1024);
	_tree2str(t,str);
	return str;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章