Leetcode Note: Go - Binary Tree Paths
Binary Tree Paths - LeetCode
https://leetcode.com/problems/binary-tree-paths/
- Go 言語で取り組んだメモ
所感
- root というバイナリツリーが連携されるので、順不同で全ての root から leaf へのパスを string 配列で return する
回答
[GO] Recursion solution - LeetCode Discuss
https://leetcode.com/problems/binary-tree-paths/discuss/556028/GO-Recursion-solution
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func binaryTreePaths(root *TreeNode) []string {
pathList := []string{}
paths(root, "", &pathList)
return pathList
}
func paths(root *TreeNode, prefix string, pathList *[]string) {
// nil チェック
if root == nil {
return
}
// prefix チェック
if len(prefix) == 0 {
prefix += strconv.Itoa(root.Val)
} else {
prefix += "->" + strconv.Itoa(root.Val)
}
// child チェック
if root.Left == nil && root.Right == nil {
*pathList = append(*pathList, prefix)
return
}
// 再帰
paths(root.Left, prefix, pathList)
paths(root.Right, prefix, pathList)
}
- 再帰で path を探索しつつ文字列を生成していき append で追加していく