每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]

题目:

你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

解题代码:

递归

func tree2str(root *TreeNode) string {
	var ans strings.Builder
	var dfs func(*TreeNode)
	dfs = func(node *TreeNode) {
		if node == nil {
			return
		}
		ans.WriteString(strconv.Itoa(node.Val))
		if node.Right != nil {
			ans.WriteString("(")
			dfs(node.Left)
			ans.WriteString(")")
			ans.WriteString("(")
			dfs(node.Right)
			ans.WriteString(")")
		} else if node.Left != nil {
			ans.WriteString("(")
			dfs(node.Left)
			ans.WriteString(")")
		}
	}
	dfs(root)
	return ans.String()
}

每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]_第1张图片

你可能感兴趣的:(每日一题,leetcode,golang,算法)