Leetcode Binary Tree Paths

twisted-fate發表於2019-05-31

覆盤 :

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 協議》,轉載必須註明作者和本文連結

相關文章