题目:
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
解题代码:
递归
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() }