亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++路徑之和實例分析

發布時間:2022-03-17 16:06:50 來源:億速云 閱讀:141 作者:iii 欄目:大數據

本文小編為大家詳細介紹“c++路徑之和實例分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“c++路徑之和實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

算法:

算法采用遞歸,核心在于如何找到遞歸的終止條件,具體步驟如下:

1.采用遞歸的方式,sum的數值要隨著遍歷過的節點做遞減操作,sum = sum-root.Val2.遞歸的終止條件sum==0是其中之一,如果要求是葉子節點的也需要加上

題目1:路徑總和

代碼實現:

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func hasPathSum(root *TreeNode, sum int) bool {    if root == nil {         return false    }    // 葉子節點的判斷,排除非葉子節點==sum的情況    if root.Left == nil && root.Right == nil {        return sum == root.Val    }    res := sum - root.Val     if hasPathSum(root.Left,res) {        return true    }    if hasPathSum(root.Right,res) {        return true    }    return false}

題目2:路徑總和2

代碼實現:

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */var res [][]intfunc pathSum(root *TreeNode, sum int) [][]int {    res = [][]int{} // 為了清空 res 上次的數值    if root == nil {         return nil    }    // var res [][]int     var tmp []int    dfs(root,sum,tmp)    return res}func dfs(root *TreeNode, sum int, tmp []int) {    if root == nil {         return     }    tmp = append(tmp,root.Val)    if sum == root.Val && root.Left == nil && root.Right == nil {        r := make([]int, len(tmp)) // 防止tmp對應的共享內容被修改        copy(r, tmp)        res = append(res, r)        return     }       dfs(root.Left,sum-root.Val,tmp)    dfs(root.Right,sum-root.Val,tmp)       return }

題目3:路徑總和3

代碼實現:

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func pathSum(root *TreeNode, sum int) int {    if root == nil {        return 0    }    result := countPath(root,sum)    result += pathSum(root.Left,sum)    result += pathSum(root.Right,sum)    return result}func countPath(root *TreeNode, sum int) int {    if root == nil {         return 0    }    count := 0    res := sum - root.Val    if res == 0 {        count = 1    }    return count + countPath(root.Left,res) + countPath(root.Right,res)}/*以當前節點作為頭結點的路徑數量以當前節點的左孩子作為頭結點的路徑數量以當前節點的右孩子作為頭結點的路徑數量*/

讀到這里,這篇“c++路徑之和實例分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

牙克石市| 兴隆县| 新巴尔虎左旗| 南皮县| 嫩江县| 南漳县| 城市| 宁明县| 桐城市| 九台市| 前郭尔| 波密县| 上犹县| 锡林浩特市| 大城县| 阳江市| 黔南| 宜阳县| 大石桥市| 南华县| 皮山县| 莲花县| 江陵县| 北流市| 康乐县| 桐梓县| 潼南县| 隆回县| 上杭县| 景德镇市| 泌阳县| 南安市| 南澳县| 定边县| 郁南县| 梧州市| 吉林省| 泸定县| 天台县| 临汾市| 汤阴县|