日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【LeetCode笔记】437. 路径总和III(Java、双重递归、二叉树)

發布時間:2024/7/23 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】437. 路径总和III(Java、双重递归、二叉树) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 題目描述
  • 思路 & 代碼

題目描述

  • 說實話確實比I & II要惡心一點
  • 這里直接用雙遞歸秒了(今天才發現我是之前先寫的III,再寫的I & II)
  • 有前綴和的寫法,但是懶得整了= =

思路 & 代碼

  • 和之前不同,這里對起點、終點不要求是根和葉子,只要求路徑向下。
  • 分成兩種情況遞歸:路徑包含當前結點,路徑不包含當前結點。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/ class Solution {int ans = 0;public int pathSum(TreeNode root, int targetSum) {if(root == null){return 0;}// 不算 root 在內的,左右可行的情況pathSum(root.right, targetSum);pathSum(root.left, targetSum);// 算 root 在內的bfs(root, targetSum, 0);return ans;}void bfs(TreeNode root, int targetSum, int nowNum){if(root == null){return;}nowNum += root.val;if(nowNum == targetSum){ans++;}bfs(root.left, targetSum, nowNum);bfs(root.right, targetSum, nowNum);} }
  • 無注釋版
class Solution {int ans = 0;public int pathSum(TreeNode root, int targetSum) {if(root == null) {return 0;}pathSum(root.left, targetSum);pathSum(root.right, targetSum);find(root, targetSum);return ans;}public void find(TreeNode root, int targetSum) {if(root == null) {return;}if(root.val == targetSum) {ans++;}find(root.left, targetSum - root.val);find(root.right, targetSum - root.val);} }

總結

以上是生活随笔為你收集整理的【LeetCode笔记】437. 路径总和III(Java、双重递归、二叉树)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。