精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

做了這么多題目了,會求左葉子之和么?

開發 前端
平時我們解二叉樹的題目時,已經習慣了通過節點的左右孩子判斷本節點的屬性,而本題我們要通過節點的父節點判斷本節點的屬性。

[[416239]]

本文轉載自微信公眾號「代碼隨想錄」,作者程序員Carl 。轉載本文請聯系代碼隨想錄公眾號。

左葉子之和

題目地址:https://leetcode-cn.com/problems/sum-of-left-leaves/

計算給定二叉樹的所有左葉子之和。

示例:

思路

首先要注意是判斷左葉子,不是二叉樹左側節點,所以不要上來想著層序遍歷。

因為題目中其實沒有說清楚左葉子究竟是什么節點,那么我來給出左葉子的明確定義:如果左節點不為空,且左節點沒有左右孩子,那么這個節點就是左葉子

大家思考一下如下圖中二叉樹,左葉子之和究竟是多少?

其實是0,因為這棵樹根本沒有左葉子!

那么判斷當前節點是不是左葉子是無法判斷的,必須要通過節點的父節點來判斷其左孩子是不是左葉子。

如果該節點的左節點不為空,該節點的左節點的左節點為空,該節點的左節點的右節點為空,則找到了一個左葉子,判斷代碼如下:

  1. if (node->left != NULL && node->left->left == NULL && node->left->right == NULL) { 
  2.     左葉子節點處理邏輯 

遞歸法

遞歸的遍歷順序為后序遍歷(左右中),是因為要通過遞歸函數的返回值來累加求取左葉子數值之和。。

遞歸三部曲:

1.確定遞歸函數的參數和返回值

判斷一個樹的左葉子節點之和,那么一定要傳入樹的根節點,遞歸函數的返回值為數值之和,所以為int

使用題目中給出的函數就可以了。

2.確定終止條件

依然是

  1. if (root == NULLreturn 0; 

3.確定單層遞歸的邏輯

當遇到左葉子節點的時候,記錄數值,然后通過遞歸求取左子樹左葉子之和,和 右子樹左葉子之和,相加便是整個樹的左葉子之和。

代碼如下:

  1. int leftValue = sumOfLeftLeaves(root->left);    // 左 
  2. int rightValue = sumOfLeftLeaves(root->right);  // 右 
  3.                                                 // 中 
  4. int midValue = 0; 
  5. if (root->left && !root->left->left && !root->left->right) { 
  6.     midValue = root->left->val; 
  7. int sum = midValue + leftValue + rightValue; 
  8. return sum

整體遞歸代碼如下:

  1. class Solution { 
  2. public
  3.     int sumOfLeftLeaves(TreeNode* root) { 
  4.         if (root == NULLreturn 0; 
  5.  
  6.         int leftValue = sumOfLeftLeaves(root->left);    // 左 
  7.         int rightValue = sumOfLeftLeaves(root->right);  // 右 
  8.                                                         // 中 
  9.         int midValue = 0; 
  10.         if (root->left && !root->left->left && !root->left->right) { // 中 
  11.             midValue = root->left->val; 
  12.         } 
  13.         int sum = midValue + leftValue + rightValue; 
  14.         return sum
  15.     } 
  16. }; 

以上代碼精簡之后如下:

  1. class Solution { 
  2. public
  3.     int sumOfLeftLeaves(TreeNode* root) { 
  4.         if (root == NULLreturn 0; 
  5.         int midValue = 0; 
  6.         if (root->left != NULL && root->left->left == NULL && root->left->right == NULL) { 
  7.             midValue = root->left->val; 
  8.         } 
  9.         return midValue + sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right); 
  10.     } 
  11. }; 

迭代法

本題迭代法使用前中后序都是可以的,只要把左葉子節點統計出來,就可以了,那么參考文章 二叉樹:聽說遞歸能做的,棧也能做!和二叉樹:迭代法統一寫法中的寫法,可以寫出一個前序遍歷的迭代法。

判斷條件都是一樣的,代碼如下:

  1. class Solution { 
  2. public
  3.     int sumOfLeftLeaves(TreeNode* root) { 
  4.         stack<TreeNode*> st; 
  5.         if (root == NULLreturn 0; 
  6.         st.push(root); 
  7.         int result = 0; 
  8.         while (!st.empty()) { 
  9.             TreeNode* node = st.top(); 
  10.             st.pop(); 
  11.             if (node->left != NULL && node->left->left == NULL && node->left->right == NULL) { 
  12.                 result += node->left->val; 
  13.             } 
  14.             if (node->right) st.push(node->right); 
  15.             if (node->left) st.push(node->left); 
  16.         } 
  17.         return result; 
  18.     } 
  19. }; 

總結

這道題目要求左葉子之和,其實是比較繞的,因為不能判斷本節點是不是左葉子節點。

此時就要通過節點的父節點來判斷其左孩子是不是左葉子了。

平時我們解二叉樹的題目時,已經習慣了通過節點的左右孩子判斷本節點的屬性,而本題我們要通過節點的父節點判斷本節點的屬性。

希望通過這道題目,可以擴展大家對二叉樹的解題思路。

其他語言版本

Java

遞歸

  1. class Solution { 
  2.     public int sumOfLeftLeaves(TreeNode root) { 
  3.         if (root == nullreturn 0; 
  4.         int leftValue = sumOfLeftLeaves(root.left);    // 左 
  5.         int rightValue = sumOfLeftLeaves(root.right);  // 右 
  6.                                                         
  7.         int midValue = 0; 
  8.         if (root.left != null && root.left.left == null && root.left.right == null) { // 中 
  9.             midValue = root.left.val; 
  10.         } 
  11.         int sum = midValue + leftValue + rightValue; 
  12.         return sum
  13.     } 

迭代

  1. class Solution { 
  2.     public int sumOfLeftLeaves(TreeNode root) { 
  3.         if (root == nullreturn 0; 
  4.         Stack<TreeNode> stack = new Stack<> (); 
  5.         stack.add(root); 
  6.         int result = 0; 
  7.         while (!stack.isEmpty()) { 
  8.             TreeNode node = stack.pop(); 
  9.             if (node.left != null && node.left.left == null && node.left.right == null) { 
  10.                 result += node.left.val; 
  11.             } 
  12.             if (node.right != null) stack.add(node.right); 
  13.             if (node.left != null) stack.add(node.left); 
  14.         } 
  15.         return result; 
  16.     } 

Python

遞歸

  1. class Solution: 
  2.     def sumOfLeftLeaves(self, root: TreeNode) -> int
  3.         if not root:  
  4.             return 0 
  5.          
  6.         left_left_leaves_sum = self.sumOfLeftLeaves(root.left)  # 左 
  7.         right_left_leaves_sum = self.sumOfLeftLeaves(root.right) # 右 
  8.          
  9.         cur_left_leaf_val = 0 
  10.         if root.left and not root.left.left and not root.left.right:  
  11.             cur_left_leaf_val = root.left.val  # 中 
  12.              
  13.         return cur_left_leaf_val + left_left_leaves_sum + right_left_leaves_sum 

迭代

  1. class Solution: 
  2.     def sumOfLeftLeaves(self, root: TreeNode) -> int
  3.         ""
  4.         Idea: Each time check current node's left node.  
  5.               If current node don't have one, skip it.  
  6.         ""
  7.         stack = [] 
  8.         if root:  
  9.             stack.append(root) 
  10.         res = 0 
  11.          
  12.         while stack:  
  13.             # 每次都把當前節點的左節點加進去.  
  14.             cur_node = stack.pop() 
  15.             if cur_node.left and not cur_node.left.left and not cur_node.left.right:  
  16.                 res += cur_node.left.val 
  17.                  
  18.             if cur_node.left:  
  19.                 stack.append(cur_node.left
  20.             if cur_node.right:  
  21.                 stack.append(cur_node.right
  22.                  
  23.         return res 

 

責任編輯:武曉燕 來源: 代碼隨想錄
相關推薦

2021-06-09 10:10:20

代碼內存編程語言

2021-03-24 08:44:11

代碼內存消耗語言

2021-06-14 07:23:42

Windows10操作系統微軟

2018-05-09 11:04:35

Java程序員大數據

2017-08-11 14:21:33

軟件開發前端框架

2024-04-02 08:41:10

ArrayListSubList場景

2023-07-17 08:21:52

漏洞版本項目

2020-12-31 05:49:44

FlinkSQL函數

2020-12-14 07:31:57

JDKJVM監控

2024-07-12 09:35:38

前端工具檢驗

2018-06-26 15:00:24

Docker安全風險

2024-02-20 08:09:51

Java 8DateUtilsDate工具類

2023-11-13 08:49:54

2022-01-12 20:04:09

網絡故障斷網事件網絡安全

2023-07-07 19:23:08

微軟文字Claude

2018-03-05 10:40:21

安卓APPGoogle

2021-01-29 08:52:10

App微信移動應用

2022-07-26 23:43:29

編程語言開發Java

2017-12-21 19:38:50

潤乾中間表

2021-01-14 05:08:44

編譯鏈接
點贊
收藏

51CTO技術棧公眾號

91久久精品美女高潮| 日韩av中文字幕在线播放| 欧美aaa在线观看| 亚洲va欧美va| 久久婷婷av| 日韩视频―中文字幕| 久久久久亚洲av无码网站| 不卡av播放| 中文字幕一区二区三区视频| 国产精品乱码| 中文字幕第99页| 欧美激情第10页| 亚洲无线码在线一区观看| 日韩精品视频网址| 国模套图日韩精品一区二区| 中文字幕一区二区三区四区| 精品视频在线播放免| 日韩欧美精品在线观看视频| 浪潮av一区| 97久久精品人人做人人爽| 欧美肥妇毛茸茸| 中文字幕乱码一区二区三区| 日本久久一级片| 久久精品国产一区二区三| 97精品国产aⅴ7777| 99久久99久久精品免费看小说.| 国产亚洲精彩久久| 精品久久久久久久久久ntr影视| www.午夜色| 国产在线你懂得| 国产成人aaa| 91精品视频观看| 制服丝袜在线一区| 久久精品官网| 9.1国产丝袜在线观看| 久久精品黄色片| 欧美成人直播| 国产一区二区三区在线看 | 蜜桃麻豆91| av中文字幕播放| 狠狠色2019综合网| 国产精品久久久久免费a∨| 99热在线观看免费精品| 欧美精品入口| 欧美大胆在线视频| 国产尤物在线播放| 亚洲一区二区日韩| 久久综合电影一区| 国产1区2区3区4区| 欧美在线黄色| 欧美大片在线看| 久久久国产精品黄毛片| 国产精品mv在线观看| 久久精品成人一区二区三区| 国产精品国产三级国产专业不| 亚洲免费福利一区| 亚洲欧美中文在线视频| 成人午夜福利一区二区| 欧美激情在线精品一区二区三区| 亚洲免费电影在线观看| 公侵犯人妻一区二区三区| 亚洲理论电影片| 亚洲色图色老头| 性欧美一区二区| 国产精品久久久久一区二区三区厕所| 色狠狠久久aa北条麻妃| 一级黄色片日本| 中文字幕一区二区三区欧美日韩| 九九久久综合网站| www..com国产| 久久国产精品久久久久久电车| 国产精品成熟老女人| 一道本在线视频| 韩国v欧美v亚洲v日本v| 成人欧美一区二区| 五月婷婷在线播放| 欧美国产视频在线| 在线观看免费黄色片| 免费网站在线观看人| 欧美日韩午夜激情| 亚洲欧美久久久久| 日本一区二区三区播放| 亚洲精品动漫100p| 青青青手机在线视频| 欧美国产高清| 秋霞成人午夜鲁丝一区二区三区| 正在播放亚洲精品| 成人综合在线观看| 日本欧美色综合网站免费| 哥也色在线视频| 红桃av永久久久| 手机在线成人免费视频| 亚洲日本va| 亚洲日韩中文字幕| 久久国产精品二区| 久久久国产精品一区二区中文| 国产日韩av在线播放| 人妻偷人精品一区二区三区| 欧美激情一区二区三区全黄 | 91精品人妻一区二区三区| 日韩a一区二区| 欧美极品第一页| 中文字幕日本视频| 不卡电影一区二区三区| 一区二区三区四区在线视频| sm在线播放| 91精品综合久久久久久| 中文字幕免费视频| 欧美日韩p片| 国产精品麻豆va在线播放| 亚洲精品一区二区三区蜜桃| 中文字幕精品在线不卡| 久久精品视频16| 电影一区二区三区久久免费观看| 亚洲视频欧洲视频| 亚洲激情视频一区| 韩国午夜理伦三级不卡影院| 日韩理论片在线观看| 成人性生交大片免费看在线播放| 欧美日韩在线综合| 人妻丰满熟妇av无码久久洗澡| 欧美在线视屏| 国产伦精品免费视频| 日韩大胆人体| 亚洲第一狼人社区| 免费国偷自产拍精品视频| 日韩精品一区二区久久| 国产成人一区二区三区小说| 午夜国产在线视频| 亚洲女人****多毛耸耸8| 欧美韩国日本在线| 九九热hot精品视频在线播放| 最近2019免费中文字幕视频三 | 日本丰满少妇裸体自慰| 伊人青青综合网| 国产日产欧美a一级在线| 国产主播福利在线| 欧美午夜片在线免费观看| 国产精品九九视频| 欧美精品自拍| 亚洲精品女av网站| 91麻豆免费在线视频| 欧美久久免费观看| 日本黄色录像视频| 美女在线观看视频一区二区| 午夜精品一区二区三区在线观看| 欧美日韩不卡| 永久免费毛片在线播放不卡| 青青草视频在线观看免费| 国产丝袜欧美中文另类| 北条麻妃av高潮尖叫在线观看| 日本福利一区| 日韩男女性生活视频| 国产精品毛片一区二区三区四区| 色综合一个色综合亚洲| 亚洲精品色午夜无码专区日韩| 久久久久久久高潮| 亚洲欧洲日韩综合二区| 欧美亚洲人成在线| 日韩一区二区精品视频| 国产精品一区二区免费视频| 中文字幕佐山爱一区二区免费| 不卡的在线视频| 综合激情在线| 精品一区2区三区| 日本免费一区二区三区四区| 在线成人免费网站| 91 中文字幕| 亚洲一区在线电影| 黑人巨大精品欧美| 卡一卡二国产精品 | 国产九色91| 人在线成免费视频| 在线视频亚洲欧美| 国产成人精品免费看视频| 亚洲成人综合网站| 中文字幕人妻一区二区三区在线视频| 美女视频黄免费的久久| 免费观看亚洲视频| 五月激激激综合网色播| 国产精品夜色7777狼人| 最新黄网在线观看| 亚洲精品国产精品国产自| 午夜视频网站在线观看| 亚洲欧美aⅴ...| 18禁裸乳无遮挡啪啪无码免费| 日韩高清在线电影| 91麻豆天美传媒在线| 天天躁日日躁成人字幕aⅴ| 国产精品九九九| www在线视频| 亚洲美女av黄| 国产同性人妖ts口直男| 色综合中文综合网| 91麻豆免费视频网站| 91视频观看免费| 亚洲天堂一区二区在线观看| 亚洲黄网站黄| 亚洲激情一区二区| 美女视频免费精品| 成人在线免费观看视视频| 国产高清自产拍av在线| 最近的2019中文字幕免费一页| 网站黄在线观看| 在线成人免费观看| 九九九在线观看| 一区二区三区中文在线| 人人人妻人人澡人人爽欧美一区| 国产98色在线|日韩| 鲁一鲁一鲁一鲁一av| 在线亚洲伦理| 永久免费网站视频在线观看| 国产日产精品一区二区三区四区的观看方式 | 亚洲精品少妇一区二区| 国内精品视频在线观看| 国产欧美日韩在线播放| 婷婷精品久久久久久久久久不卡| 奇米4444一区二区三区| 国内在线视频| 欧美成年人视频网站欧美| jizz在线免费观看| 亚洲欧美在线播放| 蜜臀久久99精品久久久| 91麻豆精品久久久久蜜臀| 日本三级一区二区三区| 色婷婷亚洲综合| 亚洲精品1区2区3区| 亚洲自拍偷拍欧美| 免费看特级毛片| 国产精品二区一区二区aⅴ污介绍| 亚洲综合网在线观看| 91亚洲国产成人精品一区二区三| 中文字幕在线观看视频www| 国产在线麻豆精品观看| 日本一二区免费| 久久精品av麻豆的观看方式| 91国产精品视频在线观看| 久久一区中文字幕| www日韩视频| 久久亚洲影院| 亚洲无吗一区二区三区| 久久久久久久欧美精品| 成人一级片网站| 免费精品视频| 女人喷潮完整视频| 欧美综合国产| 免费日韩中文字幕| 日韩国产精品久久| 国产熟人av一二三区| 日韩av电影天堂| 欧美精品性生活| 久久精品国产色蜜蜜麻豆| 老司机午夜性大片| 国产一区二区导航在线播放| 初高中福利视频网站| 丰满放荡岳乱妇91ww| 黄色污在线观看| 久久久久久99精品| 亚洲一级理论片| 亚洲另类在线一区| 日本三级网站在线观看| 欧美日韩国产麻豆| 婷婷激情五月综合| 69久久99精品久久久久婷婷| 国产福利免费视频| 亚洲第一综合天堂另类专| 免费国产在线视频| 中日韩美女免费视频网站在线观看 | 中文日韩在线视频| 含羞草www国产在线视频| 欧美放荡办公室videos4k| 98色花堂精品视频在线观看| 欧美一级在线播放| 日本午夜精品久久久久| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 国产精品中文| 国产一区二区黄色| 成人激情在线| 国产日产欧美一区二区| 一区二区精品| 第一区免费在线观看| 成人精品高清在线| 变态另类ts人妖一区二区| 亚洲天堂免费在线观看视频| 日韩高清免费av| 欧美区在线观看| 手机看片1024国产| www.久久久久| 国产精品原创| 成人免费网站在线观看| 午夜先锋成人动漫在线| 国产又爽又黄ai换脸| 亚洲综合精品| 女教师高潮黄又色视频| 久久精品夜夜夜夜久久| 永久看片925tv| 色美美综合视频| 亚洲精品久久久蜜桃动漫 | 少妇视频在线| 国产精品扒开腿爽爽爽视频| 国产精品毛片av| 亚洲AV无码成人精品一区| 亚洲综合电影一区二区三区| 在线观看av免费观看| 久久影视一区二区| 免费在线视频一区二区| 欧美日韩国产天堂| 青草久久伊人| 欧美激情网站在线观看| 成人免费91| 亚洲欧美国产不卡| 久久成人精品| 女同性恋一区二区三区| 亚洲欧美激情插| 中文字幕在线播放日韩| 亚洲精品一区av在线播放| 免费看电影在线| 91在线观看免费| 日韩国产欧美一区二区| 欧美xxxxx在线视频| 成人av动漫在线| 欧美丰满艳妇bbwbbw| 538在线一区二区精品国产| 国产在线日本| 日本国产高清不卡| 欧美变态网站| 六月婷婷在线视频| 粉嫩嫩av羞羞动漫久久久| 中文字幕av播放| 欧美精品18+| 国产在线1区| 成人在线观看视频网站| 91精品成人| 国产欧美激情视频| 国产精品久久久久一区二区三区| 色老头在线视频| 一个人www欧美| 日韩欧美精品一区二区综合视频| 久久人人爽爽人人爽人人片av| 99日韩精品| 超碰97在线资源站| 精品人伦一区二区三区蜜桃免费| 神马午夜电影一区二区三区在线观看| 久久久久久亚洲| 成人精品毛片| 波多野结衣家庭教师在线播放| 91碰在线视频| 成人h动漫精品一区二区下载| 亚洲欧美国内爽妇网| 欧美特大特白屁股xxxx| 日韩欧美精品在线不卡| 男女男精品视频网| 美女视频久久久| 欧美大胆人体bbbb| 99久久精品免费看国产小宝寻花 | 在线观看网站黄| 亚洲综合一区在线| 天天操天天干天天插| 2019中文字幕在线| 精品亚洲成人| 亚洲美女爱爱视频| 一区二区欧美精品| 性xxxx视频| 国产精品久久久久久亚洲调教| 国产精品久久久久久久免费观看| 无码人妻丰满熟妇区毛片蜜桃精品 | 天天好比中文综合网| 韩国av一区二区三区| 国产性猛交普通话对白| 亚洲精品一区二区在线| 美女网站视频一区| 日本一区二区免费高清视频| 丁香婷婷深情五月亚洲| 亚洲天堂男人av| 日韩有码在线观看| 久久精品凹凸全集| 男女男精品视频站| 亚洲一区免费在线观看| 欧美亚洲日本| 91精品视频大全| 在线综合亚洲| 日韩在线不卡av| 日韩精品中文在线观看| 欧洲亚洲精品| 久久视频这里有精品| 国产精品萝li| 香蕉av一区二区三区| 国产在线视频欧美| 亚洲综合好骚| 特级片在线观看| 亚洲男人第一av网站| 欧美国产中文高清| 亚洲高清在线免费观看| 亚洲午夜视频在线观看| 成人动漫在线免费观看| 国产一区二区三区四区五区在线| 蜜桃av一区二区| 精品欧美一区二区三区免费观看| 日韩视频一区在线| 久久91精品|