第二周 二叉樹

二叉樹中的最大路徑和

這題思考的時候還是比較簡單的,首先思考的最大路徑和的計算邏輯,同樣使用的是遞歸
結(jié)束邏輯:出現(xiàn)空節(jié)點的時候
計算邏輯:計算根節(jié)點和左右子節(jié)點之和根節(jié)點與左右較大節(jié)點的比較,返回當(dāng)前較大值,累計最大值
可以通過遞歸的計算的節(jié)點,都是只能和左右節(jié)點中其中一個來計算的

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func maxPathSum(root *TreeNode) int {
    _,maxSum:= helper(root)
    return maxSum
}

func helper(root *TreeNode)(int,int){
    if root == nil{
        return 0,math.MinInt32
    }
    leftVal,leftMax := helper(root.Left)
    leftVal = max(leftVal,0)
    rightVal,rightMax := helper(root.Right)
    rightVal = max(rightVal,0)
    newSum := root.Val + leftVal + rightVal
    return root.Val + max(leftVal,rightVal), max(max(leftMax,rightMax),newSum)
}

func max (left,right int)int{
    if left > right {
        return left
    }
    return right
}

路徑總和 II

這題的思路還是很清晰的,在通過簡單的題目之后,這題就顯得很容易,唯一需要處理的就是怎么將所有路徑返回
出現(xiàn)了這幾個問題:
1、不能使用全局變量:這里之前對結(jié)果使用全局變量,但是代碼執(zhí)行的邏輯,意味著結(jié)果會出現(xiàn)重復(fù)的問題
2、golang中出現(xiàn)的在二維切片中,添加切片的問題

ret = append(ret,append([]int{},singleRet...))

最終結(jié)果是這樣的

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func pathSum(root *TreeNode, targetSum int) [][]int {
    var(
        ret [][]int
        singleRet []int
    )
    var h func(root*TreeNode,targetSum int)
    h = func(root*TreeNode,targetSum int){
        if root == nil{
            return 
        }
        targetSum -=root.Val
        singleRet = append(singleRet,root.Val)
        defer func() {
            singleRet = singleRet[:len(singleRet)-1]
        }()
        if root.Left == nil && root.Right ==nil && targetSum == 0{
            ret = append(ret,append([]int{},singleRet...))
        }
        h(root.Left,targetSum)
        h(root.Right,targetSum)
    }
    h(root,targetSum)
    return ret
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容