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

聊一聊有一種樹叫做累加樹!

開發 架構
給出二叉 搜索 樹的根節點,該樹的節點值各不相同,請你將其轉換為累加樹(Greater Sum Tree),使每個節點 node 的新值等于原樹中大于或等于 node.val 的值之和。

[[422852]]

把二叉搜索樹轉換為累加樹

力扣題目:https://leetcode-cn.com/problems/convert-bst-to-greater-tree/

給出二叉 搜索 樹的根節點,該樹的節點值各不相同,請你將其轉換為累加樹(Greater Sum Tree),使每個節點 node 的新值等于原樹中大于或等于 node.val 的值之和。

提醒一下,二叉搜索樹滿足下列約束條件:

節點的左子樹僅包含鍵 小于 節點鍵的節點。節點的右子樹僅包含鍵 大于 節點鍵的節點。左右子樹也必須是二叉搜索樹。

示例 1:

把二叉搜索樹轉換為累加樹

  • 輸入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
  • 輸出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]

示例 2:

  • 輸入:root = [0,null,1]
  • 輸出:[1,null,1]

示例 3:

  • 輸入:root = [1,0,2]
  • 輸出:[3,3,2]

示例 4:

  • 輸入:root = [3,2,4,1]
  • 輸出:[7,9,4,10]

提示:

  • 樹中的節點數介于 0 和 104 之間。
  • 每個節點的值介于 -104 和 104 之間。
  • 樹中的所有值 互不相同 。
  • 給定的樹為二叉搜索樹。

思路

一看到累加樹,相信很多小伙伴都會疑惑:如何累加?遇到一個節點,然后在遍歷其他節點累加?怎么一想這么麻煩呢。

然后再發現這是一顆二叉搜索樹,二叉搜索樹啊,這是有序的啊。

那么有序的元素如果求累加呢?

其實這就是一棵樹,大家可能看起來有點別扭,換一個角度來看,這就是一個有序數組[2, 5, 13],求從后到前的累加數組,也就是[20, 18, 13],是不是感覺這就簡單了。

為什么變成數組就是感覺簡單了呢?

因為數組大家都知道怎么遍歷啊,從后向前,挨個累加就完事了,這換成了二叉搜索樹,看起來就別扭了一些是不是。

那么知道如何遍歷這個二叉樹,也就迎刃而解了,從樹中可以看出累加的順序是右中左,所以我們需要反中序遍歷這個二叉樹,然后順序累加就可以了。

遞歸

遍歷順序如圖所示:

把二叉搜索樹轉換為累加樹

本題依然需要一個pre指針記錄當前遍歷節點cur的前一個節點,這樣才方便做累加。

pre指針的使用技巧,我們在二叉樹:搜索樹的最小絕對差和二叉樹:我的眾數是多少?都提到了,這是常用的操作手段。

遞歸函數參數以及返回值

這里很明確了,不需要遞歸函數的返回值做什么操作了,要遍歷整棵樹。

同時需要定義一個全局變量pre,用來保存cur節點的前一個節點的數值,定義為int型就可以了。

代碼如下:

  1. int pre; // 記錄前一個節點的數值 
  2. void traversal(TreeNode* cur) 
  • 確定終止條件

遇空就終止。

  1. if (cur == NULLreturn
  • 確定單層遞歸的邏輯

注意要右中左來遍歷二叉樹, 中節點的處理邏輯就是讓cur的數值加上前一個節點的數值。

代碼如下:

  1. traversal(cur->right);  // 右 
  2. cur->val += pre;        // 中 
  3. pre = cur->val; 
  4. traversal(cur->left);   // 左 

遞歸法整體代碼如下:

  1. class Solution { 
  2. private: 
  3.     int pre; // 記錄前一個節點的數值 
  4.     void traversal(TreeNode* cur) { // 右中左遍歷 
  5.         if (cur == NULLreturn
  6.         traversal(cur->right); 
  7.         cur->val += pre; 
  8.         pre = cur->val; 
  9.         traversal(cur->left); 
  10.     } 
  11. public
  12.     TreeNode* convertBST(TreeNode* root) { 
  13.         pre = 0; 
  14.         traversal(root); 
  15.         return root; 
  16.     } 
  17. }; 

迭代法

迭代法其實就是中序模板題了,在二叉樹:前中后序迭代法和二叉樹:前中后序統一方式迭代法可以選一種自己習慣的寫法。

這里我給出其中的一種,代碼如下:

  1. class Solution { 
  2. private: 
  3.     int pre; // 記錄前一個節點的數值 
  4.     void traversal(TreeNode* root) { 
  5.         stack<TreeNode*> st; 
  6.         TreeNode* cur = root; 
  7.         while (cur != NULL || !st.empty()) { 
  8.             if (cur != NULL) { 
  9.                 st.push(cur); 
  10.                 cur = cur->right;   // 右 
  11.             } else { 
  12.                 cur = st.top();     // 中 
  13.                 st.pop(); 
  14.                 cur->val += pre; 
  15.                 pre = cur->val; 
  16.                 cur = cur->left;    // 左 
  17.             } 
  18.         } 
  19.     } 
  20. public
  21.     TreeNode* convertBST(TreeNode* root) { 
  22.         pre = 0; 
  23.         traversal(root); 
  24.         return root; 
  25.     } 
  26. }; 

總結

經歷了前面各種二叉樹增刪改查的洗禮之后,這道題目應該比較簡單了。

好了,二叉樹已經接近尾聲了,接下來就是要對二叉樹來一個大總結了。

其他語言版本

Java

  1. class Solution { 
  2.     int sum
  3.     public TreeNode convertBST(TreeNode root) { 
  4.         sum = 0; 
  5.         convertBST1(root); 
  6.         return root; 
  7.     } 
  8.  
  9.     // 按右中左順序遍歷,累加即可 
  10.     public void convertBST1(TreeNode root) { 
  11.         if (root == null) { 
  12.             return
  13.         } 
  14.         convertBST1(root.right); 
  15.         sum += root.val; 
  16.         root.val = sum
  17.         convertBST1(root.left); 
  18.     } 

Python

遞歸法

  1. class Solution: 
  2.     def convertBST(self, root: TreeNode) -> TreeNode: 
  3.         def buildalist(root): 
  4.             if not root: return None 
  5.             buildalist(root.right)  #右中左遍歷 
  6.             root.val += self.pre 
  7.             self.pre = root.val 
  8.             buildalist(root.left
  9.         self.pre = 0  #記錄前一個節點的數值 
  10.         buildalist(root) 
  11.         return root 

本文轉載自微信公眾號「代碼隨想錄」,可以通過以下二維碼關注。轉載本文請聯系代碼隨想錄公眾號。

 

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

2022-06-22 12:54:58

人工智能機器人元宇宙

2023-11-04 16:28:54

2013-03-26 22:32:48

2018-06-07 13:17:12

契約測試單元測試API測試

2021-01-28 22:31:33

分組密碼算法

2020-05-22 08:16:07

PONGPONXG-PON

2023-09-22 17:36:37

2022-09-26 08:03:25

VMware虛擬機

2023-02-09 10:39:15

gRPC通信模式

2021-05-12 18:02:23

方法創建線程

2024-09-09 08:29:25

2020-08-12 08:34:16

開發安全We

2022-10-08 11:33:56

邊緣計算云計算

2022-11-26 00:00:06

裝飾者模式Component

2020-06-28 09:30:37

Linux內存操作系統

2022-03-08 16:10:38

Redis事務機制

2022-03-29 09:56:21

游戲版本運營

2020-09-08 06:54:29

Java Gradle語言

2019-12-17 10:06:18

CDMA高通4G

2021-01-01 09:01:05

前端組件化設計
點贊
收藏

51CTO技術棧公眾號

成人免费av| 草草在线视频| 欧美国产一级片| 9999精品成人免费毛片在线看| www.亚洲精品| 国产精品高潮粉嫩av| 国产在视频线精品视频| 日本免费一区二区视频| 欧美日韩一区二区在线播放| 亚洲激情电影在线| 亚洲精品久久久久久动漫器材一区 | 成人a免费视频| 久久99久久久| 精品午夜久久| 欧美精品一区视频| 国产免费又粗又猛又爽| 羞羞的视频在线看| 久久久久久夜精品精品免费| 成人美女免费网站视频| 日韩美女视频网站| 婷婷综合五月| 亚洲美女性视频| 国产黑丝在线视频| 欧美韩国亚洲| 亚洲a一区二区| 亚洲天堂av免费在线观看| 天堂在线中文字幕| 国产乱人伦偷精品视频免下载| 青草热久免费精品视频| 青娱乐国产在线| 欧美中文一区二区| 亚洲精品在线不卡| 波多野结衣网页| 欧美aaaaaaaa| 日本久久一区二区| 成人久久久久久久久| 九色91在线| 综合久久久久综合| 手机看片福利永久国产日韩| 天堂在线资源库| 国产成人精品免费一区二区| 91精品国产综合久久香蕉的用户体验 | 久久精品不卡| 亚洲色图在线观看| 免费看黄色aaaaaa 片| 成人av婷婷| 日韩一级二级三级| 一起草最新网址| 精品一区二区三区在线观看视频| 精品视频一区三区九区| 红桃av在线播放| 女厕盗摄一区二区三区| 都市激情亚洲色图| 春日野结衣av| 在线观看网站免费入口在线观看国内 | 久久精品99国产精品| 日韩美女在线观看| 波多野结衣不卡| 三级一区在线视频先锋| 日本久久久久久久| 怡红院av久久久久久久| 日本视频中文字幕一区二区三区| 国产精品高潮呻吟久久av无限| 久久久久久久久久成人| 丝袜亚洲另类欧美| 国产精品久久婷婷六月丁香| www.av88| 精彩视频一区二区| 亚洲精品免费av| 国产激情视频在线播放| 国产91丝袜在线播放0| 国产a一区二区| 亚洲第一大网站| 99久久婷婷国产综合精品电影| 国产伦精品一区二区三区免费视频| 天天操天天干天天爱| 久久影视一区二区| 亚洲欧美日韩精品在线| 成人直播在线| 午夜伦欧美伦电影理论片| www国产精品内射老熟女| 成人影院大全| 欧美剧在线免费观看网站| 日本wwwxx| 日韩一级电影| 色悠悠国产精品| 欧美激情精品久久| 国产欧美午夜| 国产伦精品免费视频| 国产免费一区二区三区最新不卡| 波多野结衣视频一区| 日本欧洲国产一区二区| a免费在线观看| 欧美日韩激情小视频| 在线观看亚洲色图| 澳门精品久久国产| 亚洲丝袜在线视频| 暗呦丨小u女国产精品| 尤物网精品视频| 国产精品免费在线免费| 亚洲欧美高清视频| 国产精品久久久久久久久动漫 | 久久青青草原| 免费看a在线观看| 亚洲成人一区在线| 中文字幕久久av| 欧美亚洲国产日韩| 美女撒尿一区二区三区| www.欧美色| 国产精品一色哟哟哟| 日本一区二区三区视频免费看| 超碰在线观看免费版| 日韩欧美国产激情| 性一交一黄一片| 全球成人免费直播| 欧美孕妇与黑人孕交| 国产成人毛毛毛片| 中文字幕av一区 二区| 国产中文字幕免费观看| 91免费精品国偷自产在线在线| 国产亚洲精品va在线观看| 久久久久99精品| 国产一区二区毛片| 亚洲欧美精品| 日韩精品免费观看视频| 亚洲国产精品久久精品怡红院| 99鲁鲁精品一区二区三区| 久久一区二区三区四区五区 | 欧美熟妇乱码在线一区| 亚洲欧美中日韩| 91日韩视频在线观看| 欧美挤奶吃奶水xxxxx| 欧美日韩国产成人高清视频| 91尤物国产福利在线观看| 久久精品人人爽人人爽| 日本午夜激情视频| 国产精品毛片久久久| 欧美日韩成人在线观看| a天堂在线视频| 亚洲三级电影网站| 色婷婷激情视频| 羞羞色午夜精品一区二区三区| 国产精品私拍pans大尺度在线| 欧美捆绑视频| 一道本成人在线| 免费中文字幕av| 国产精品日本| 精品人伦一区二区三区| 欧美亚洲日本精品| 日韩高清免费观看| 国产精品久久久久久99| 99久久综合国产精品| 男人用嘴添女人下身免费视频| 国内精品免费| 亚洲18私人小影院| 神马电影在线观看| 日本韩国一区二区三区视频| 久久久久亚洲av成人无码电影| 老司机精品久久| 日本一区二区免费看| 久久久久黄色| 精品中文字幕在线| 亚洲乱色熟女一区二区三区| 亚洲国产精品欧美一二99| 国产黑丝在线观看| 亚洲综合日本| 色一情一乱一伦一区二区三欧美| 先锋欧美三级| www国产精品com| 99久久亚洲精品日本无码| 亚洲最大成人网4388xx| 在线免费观看污视频| 久久经典综合| 杨幂一区欧美专区| 日韩一区二区三区精品视频第3页| 欧美富婆性猛交| 色在线免费视频| 欧美日韩精品一区二区三区 | 色诱亚洲精品久久久久久| 一色道久久88加勒比一| 麻豆精品在线视频| wwwwww欧美| 最近国产精品视频| 国产欧美在线视频| а_天堂中文在线| 一本大道久久加勒比香蕉| 一本色道久久综合亚洲| 亚洲一区二区三区在线| 成人性生交大免费看| 精品一区二区三区影院在线午夜| 欧美中日韩在线| 精品日韩一区| av观看久久| 国产精品久久亚洲不卡| 欧美日本高清视频| 国产福利小视频在线观看| 日韩一二三四区| 无码任你躁久久久久久久| 一区二区三区中文字幕精品精品| 女同毛片一区二区三区| 国产精品一区二区在线观看网站 | 日本青青草视频| 2023国产精品| 国产伦理在线观看| 男男视频亚洲欧美| 热99这里只有精品| 亚洲成人一区| 日韩资源av在线| 9国产精品午夜| 国产欧美日韩高清| 欧美aa一级| 欧美激情按摩在线| 在线免费看黄网站| 亚洲精品v天堂中文字幕| 一区二区三区免费观看视频| 懂色av影视一区二区三区| 免费一级a毛片夜夜看| 日本一区二区免费在线观看视频| 在线观看一区二区三区四区| 久久精品国产精品亚洲精品| 春日野结衣av| 在线综合亚洲| 日韩精品在线观看av| 国产精品久久久久蜜臀| 婷婷五月色综合| 国语产色综合| 青娱乐一区二区| 亚洲第一二三区| 国产精品久久久一区二区三区| 日本成人在线网站| 国产精品第100页| 午夜伦理福利在线| 97精品欧美一区二区三区| 青青青国内视频在线观看软件| 久久黄色av网站| 亚洲麻豆精品| 视频一区视频二区国产精品| 国产51人人成人人人人爽色哟哟| 国产视频精品在线| 婷婷亚洲一区二区三区| 日韩国产欧美精品一区二区三区| 日本黄色一区二区三区| 精品嫩草影院久久| 黄色片网站免费在线观看| 日韩亚洲欧美中文三级| 国产草草影院ccyycom| 正在播放亚洲一区| 国产成人精品av在线观| 精品毛片乱码1区2区3区| 国产91免费在线观看| 欧美va亚洲va香蕉在线| 手机看片国产1024| 亚洲第一精品久久忘忧草社区| 人妻无码一区二区三区久久99 | 色婷婷综合久久久中文一区二区| 区一区二在线观看| 91久久精品午夜一区二区| 波多野结衣视频免费观看| 欧美性猛交一区二区三区精品| 在线免费看毛片| 7777精品伊人久久久大香线蕉完整版 | 久久永久免费| 国内自拍视频网| 精品夜夜嗨av一区二区三区| 在线视频一二区| 国产成人免费视频网站 | 北条麻妃在线视频| 日韩精品午夜视频| 五月婷婷六月丁香激情| 激情五月婷婷综合网| 性一交一黄一片| 久久亚洲一级片| 欧美福利第一页| 亚洲美女一区二区三区| 国产亚洲精久久久久久无码77777| 午夜免费久久看| 中文字幕一区二区三区四区视频 | 国产亚洲一区二区三区在线播放| 欧美交a欧美精品喷水| 婷婷四月色综合| 午夜精品国产| 日韩中文字幕免费在线 | 在线免费播放av| 国产日韩精品一区二区浪潮av| 永久av免费网站| 亚洲成人自拍偷拍| 亚洲网站免费观看| 亚洲精品乱码久久久久久金桔影视| 国模吧精品人体gogo| 欧美精品一区三区| 大胆人体一区二区| 国产女精品视频网站免费| 国产主播性色av福利精品一区| 日本不卡高清视频一区| 中国成人一区| 凹凸日日摸日日碰夜夜爽1| 国产乱码精品一区二区三| 免费看黄色aaaaaa 片| 亚洲人精品一区| www.久久精品视频| 精品精品欲导航| 免费黄网站在线| 国产精品扒开腿做爽爽爽的视频| 亚洲日本va| 中日韩在线视频| 久久久久中文| 国产精品熟妇一区二区三区四区 | 激情五月婷婷六月| 轻轻草成人在线| 免费中文字幕av| 亚洲精品国产成人久久av盗摄| 国产一区二区视频免费| 亚洲精品福利在线| 中文在线字幕免费观看| 国产精品美女在线观看| 天堂av一区二区三区在线播放| 色一情一乱一乱一区91| 毛片av一区二区| 久久亚洲AV无码专区成人国产| 亚洲va欧美va国产va天堂影院| 杨幂毛片午夜性生毛片| 日本午夜精品久久久久| 牛人盗摄一区二区三区视频| 在线一区免费| 亚洲精品第三页| 中文字幕av在线一区二区三区| 日韩一区二区视频在线| 亚洲国产精久久久久久久| 色在线视频网| 成人精品一区二区三区电影黑人 | 伊人久久大香线蕉av一区| 香蕉av777xxx色综合一区| 中国极品少妇xxxx| 尤物视频一区二区| 97成人免费视频| 色婷婷综合成人av| 国产成人精品一区二区三区视频| 日韩av大全| 久久一区欧美| 日韩av片在线| 欧美性色欧美a在线播放| av资源种子在线观看| 国产精品69av| 精品免费一区二区| 牛夜精品久久久久久久| 国产视频视频一区| 69xxxx国产| 色吧影院999| 欧美一级做一级爱a做片性| 亚洲伊人婷婷| 激情亚洲综合在线| 欧产日产国产v| 精品国产露脸精彩对白| 伦理av在线| 精品欧美一区二区在线观看视频 | 91精品国产91久久久久久密臀| 日本在线一二三区| 中文字幕一区在线| 99在线精品视频免费观看20| 欧美成人精品三级在线观看| 亚洲精品一区二区三区在线| 免费人成自慰网站| 91一区二区在线观看| 亚洲 日本 欧美 中文幕| 一区二区三区回区在观看免费视频 | 亚洲一区在线观看免费观看电影高清| 国产黄色小视频在线观看| 国产综合在线视频| 妖精一区二区三区精品视频| 99视频在线免费| 亚洲视频免费看| 亚洲国产日韩在线观看| 2021久久精品国产99国产精品| 国产精品午夜一区二区三区| av污在线观看| 一区二区三区不卡视频| 四虎在线免费观看| 国产精品久久久久久久app| 亚洲理论电影网| 少妇一级淫免费观看| 欧美天堂一区二区三区| 欧洲精品二区| 青娱乐国产91| 国产精品2024| 午夜精品免费观看| 久久99亚洲精品| 精品免费一区二区| 性感美女一区二区三区| 一道本成人在线| 日韩精品卡一| 日本不卡高清视频一区| 国产精品一二三在| av一级在线观看| 欧美大片大片在线播放| 国产一区二区三区网| 日本女人性视频| 欧美在线观看视频在线| 国产经典三级在线| 亚洲精品一区二| 91女人视频在线观看|