覆盤 :
go的字串處理不熟悉 , 特殊情況沒有一般化 , if else 特別多 , 看看bobo是怎麼處理的,然後重寫一版
pesudo code:
treePathsIn(node,rootPath)
if node is leaf
res[]=rootpath+node.val
return
else
if node.left
treePathsIn(node.left,rootpath+node.val)
if node.right
treePathsIn(node.right,rootpath+node.val)
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func binaryTreePaths(root *TreeNode) []string {
if root==nil {
return []string{}
}
s:=Solution{}
if root.Left==nil && root.Right==nil {
return []string{strconv.Itoa(root.Val)}
}
if root.Left!=nil {
s.treePathsIn(root.Left,strconv.Itoa(root.Val))
}
if root.Right!=nil {
s.treePathsIn(root.Right,strconv.Itoa(root.Val))
}
return s.res
}
type Solution struct {
res []string
}
func (t *Solution) treePathsIn(node *TreeNode,rootPath string) {
if node.Left==nil && node.Right==nil {
t.res=append(t.res,rootPath+"->"+strconv.Itoa(node.Val))
return
} else {
if node.Left!=nil {
t.treePathsIn(node.Left,rootPath+"->"+strconv.Itoa(node.Val))
}
if node.Right!=nil {
t.treePathsIn(node.Right,rootPath+"->"+strconv.Itoa(node.Val))
}
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結