package main import ( "strconv" "fmt" "strings" ) /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param root TreeNode类 * @return TreeNode类 */ func Serialize(root *TreeNode) string { node := root res := strings.Builder{} var pre func(node *TreeNode) pre = func(node *TreeNode) { if node == nil { res.WriteString("#,") return } res.WriteString(fmt.Sprintf("%v,", node.Val)) pre(node.Left) pre(node.Right) } pre(node) return res.String() } func Deserialize(s string) *TreeNode { str := s if len(str) == 0 { return nil } arr := strings.Split(str, ",") var build func() *TreeNode build = func() *TreeNode { if arr[0] == "#" { arr = arr[1:] return nil } ele, _ := strconv.Atoi(arr[0]) arr = arr[1:] node := &TreeNode{Val: ele} node.Left = build() node.Right = build() return node } return build() }