精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

大尺度做爰床戏呻吟舒畅| 女人帮男人橹视频播放| 亚洲天堂网在线视频| 99热在线成人| 精品久久久久久综合日本欧美| 超碰成人免费在线| 国产一级片在线| 黄色资源网久久资源365| 欧美极品少妇xxxxⅹ免费视频| 国产精品揄拍100视频| 久久国内精品| 亚洲自拍与偷拍| 水蜜桃亚洲精品| 亚洲免费成人网| 日本欧美大码aⅴ在线播放| 欧美老少配视频| 第一次破处视频| 超碰精品在线观看| 欧美视频中文字幕| 91.com在线| 午夜伦全在线观看| 91在线视频官网| 成人免费黄色网| 日韩 欧美 综合| 97人人精品| 亚洲女成人图区| 久久久男人的天堂| 六九午夜精品视频| 色香色香欲天天天影视综合网| 四虎影院一区二区| 国产女主播在线直播| 成人手机在线视频| 川上优av一区二区线观看| 亚洲天堂一区在线| 亚洲欧洲综合| 欧美大片网站在线观看| 91动漫免费网站| 国产日产一区| 亚洲欧美国产另类| 国产精品第七页| 久9re热视频这里只有精品| 欧美精品成人一区二区三区四区| 成人免费无码av| 性欧美freesex顶级少妇| 亚洲精品国产a| 一区二区三区三区在线| 国产区在线视频| 久久久久久久国产精品影院| 久久久www免费人成黑人精品| www夜片内射视频日韩精品成人| 日韩**一区毛片| 国产成人久久久| 久久久久久久久黄色| 亚洲美洲欧洲综合国产一区| 欧美极品少妇xxxxⅹ免费视频| 国产成人久久久久| 中文字幕午夜精品一区二区三区 | 亚洲一区av在线| 国产又黄又爽免费视频| 日韩黄色影院| 亚洲天堂精品视频| 可以免费看的黄色网址| 呦呦在线视频| 亚洲一区二区三区四区五区中文| 黄色一级片国产| 免费av不卡在线观看| 亚洲综合久久av| 青青艹视频在线| 亚洲精品永久免费视频| 91久久奴性调教| 亚洲欧美国产日韩综合| 久久夜夜久久| 91精品国产综合久久香蕉麻豆| 九九久久久久久| 中文在线综合| 亚洲国产精品免费| 强伦人妻一区二区三区| 欧美一区二区三区高清视频| 亚洲欧美日韩中文在线| 日本不卡一区视频| 欧美精品九九| 69av在线视频| 中文字幕一区二区三区四区免费看| 免费成人av资源网| 亚洲一区二区三| 婷婷国产在线| 国产精品美女www爽爽爽| 中文字幕色一区二区| 欧美性受ⅹ╳╳╳黑人a性爽| 亚洲成a人片在线不卡一二三区| www.玖玖玖| 伊人久久一区| 精品国产乱码久久| 亚洲综合欧美综合| 国产精品hd| 日韩av快播网址| 国产精品自产拍| 99热在这里有精品免费| 亚洲乱码一区二区三区| 黄色在线观看视频网站| 色婷婷国产精品综合在线观看| 午夜免费福利视频在线观看| 国产伦精品一区二区三区免费优势 | 欧美—级高清免费播放| 91麻豆精品在线| 成人丝袜18视频在线观看| 亚洲va久久久噜噜噜久久狠狠 | 青青一区二区三区| 久久久免费av| 91中文字幕在线播放| 97久久精品人人做人人爽50路| 亚洲一区二区在线免费观看| 绿色成人影院| 欧美一区二区三区免费在线看 | 成人在线一区| 97在线视频观看| 国产绿帽刺激高潮对白| 久久久亚洲国产美女国产盗摄| 男人天堂成人网| 欧洲亚洲两性| 亚洲国产欧美久久| 日韩女优一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产在线欧美日韩| 伊人影院蕉久影院在线播放| 欧美在线观看禁18| 一级性生活毛片| 99伊人成综合| 国产91精品入口17c| 看女生喷水的网站在线观看| 91久久精品一区二区三区| 欧产日产国产精品98| 亚洲高清资源在线观看| 国产精品亚洲视频在线观看| 九一国产在线| 黑丝美女久久久| 欧美成人精品一区二区综合免费| 亚洲五月综合| 91精品久久久久久久久久另类 | 国产一区二区三区电影在线观看| 午夜精品久久17c| 亚洲h视频在线观看| 亚洲美女在线一区| 欧美性受xxxxxx黑人xyx性爽| 精品国产视频| 国产精品99久久久久久久久| 日本天堂在线| 欧美视频第一页| 亚洲精品成人无码熟妇在线| 亚洲综合激情| 欧美精品在线一区| 美女100%一区| 一道本无吗dⅴd在线播放一区| 欧美啪啪小视频| 久久久精品人体av艺术| 男人操女人逼免费视频| 亚洲精华一区二区三区| 国产成人精品久久久| 电影av在线| 欧美日韩美女一区二区| 男人的午夜天堂| 国产一区二区在线观看免费| 亚洲五码在线观看视频| 国产精品玖玖玖在线资源| 久久久久久久久久久网站| 日本人妻丰满熟妇久久久久久| 亚洲国产视频一区| 中文字幕狠狠干| 日本在线播放一区二区三区| 四虎一区二区| 国产精品日本一区二区三区在线 | 欧美成人精品三级网站| 在线精品国产欧美| 99精品视频免费看| 亚洲国产成人tv| 国产熟妇久久777777| 日韩高清国产一区在线| 一区二区三区四区在线视频 | 欧美第一黄网| 欧美黑粗硬大| 久久久久久久av| 欧美精品久久久久久久久久丰满| 欧美亚洲国产一区二区三区va| 亚洲欧美综合7777色婷婷| 国产成a人亚洲精| 国产亚洲精品网站| 亚洲精品国产偷自在线观看| 国产精选一区二区| jizz久久久久久| 欧美国产日韩一区| 国产高清av在线| 欧美变态tickling挠脚心| 在线观看日本网站| 亚洲日本中文字幕区| 国产麻豆天美果冻无码视频| 日本欧美加勒比视频| 国产精品videossex国产高清| 亚洲aa在线| 亚洲一区二区久久久久久久| 亚洲性色av| 欧美日韩国产va另类| 九九在线视频| 精品国产百合女同互慰| 91视频在线视频| 亚洲高清中文字幕| xxxx日本少妇| 国产欧美日韩三区| 美女伦理水蜜桃4| 精品一区二区三区在线播放视频| 精品这里只有精品| 国产综合精品| 中文有码久久| 欧美老女人另类| 精品一区二区三区视频日产| 国产午夜久久av| 国产精品高清免费在线观看| 97蜜桃久久| 欧美日韩不卡合集视频| 91青青在线视频| 亚洲欧洲高清在线| 刘亦菲毛片一区二区三区| 欧美精品一二三四| 自拍偷拍色综合| 欧美性高潮在线| 日韩精品一区二区av| 亚洲另类一区二区| 欧美肥妇bbwbbw| 国产精品日韩成人| 五月天精品视频| 91麻豆国产福利精品| 国产一级黄色录像| 国产不卡一区视频| 中文字幕人妻熟女人妻a片| 精品一区二区在线播放| 中日韩av在线播放| 久久精品久久综合| 国产喷水theporn| 喷白浆一区二区| 日韩av片网站| 人人精品人人爱| 欧美婷婷精品激情| 免费看欧美女人艹b| 欧美性猛交xxx乱久交| 亚洲女同同性videoxma| 精品中文字幕av| 亚洲欧美清纯在线制服| 日韩精品视频久久| 日韩在线a电影| 精品日韩久久久| 久久精品国产精品亚洲精品| 久久婷婷综合色| 九色porny丨国产精品| 99国产精品久久久久久| 国产一区福利在线| www.美色吧.com| 97久久精品人人爽人人爽蜜臀| 久久精品aⅴ无码中文字字幕重口| 国产风韵犹存在线视精品| 91精品人妻一区二区三区四区| 国产激情一区二区三区桃花岛亚洲| 97超碰人人看| 波多野结衣中文字幕一区二区三区 | av一区二区三区四区| 中文字幕第3页| 2020国产成人综合网| 国精产品一区二区三区| 国产精品乱码人人做人人爱 | 亚洲日本免费| 1024精品视频| 久久99精品久久久久久动态图| 一级黄色录像在线观看| 国产美女视频91| 国产精九九网站漫画| www日韩大片| 91视频免费看片| 亚洲午夜久久久久久久久电影网 | 欧美日韩国产精品自在自线| 99热这里只有精品3| 亚洲精品第一页| freemovies性欧美| 欧美高跟鞋交xxxxhd| 成人一区福利| 91久久精品国产91久久| 国产66精品| 亚洲不卡1区| 亚洲91精品| 免费毛片小视频| 狠狠狠色丁香婷婷综合激情| 亚洲av无码一区东京热久久| 国产欧美日韩视频在线观看| 希岛爱理中文字幕| 欧美性极品xxxx做受| 国产麻豆精品一区| 亚洲欧美另类人妖| 日本在线视频www鲁啊鲁| 日韩av电影在线免费播放| 涩爱av色老久久精品偷偷鲁| 欧美动漫一区二区| 欧美日本不卡| 天天干天天玩天天操| 成人亚洲精品久久久久软件| 中文字幕有码在线播放| 亚洲自拍偷拍麻豆| 在线免费看av的网站| 欧美精品一区男女天堂| 国产乱色在线观看| 国产91在线播放精品91| 综合伊人久久| 亚洲日本欧美在线| 免费在线亚洲欧美| 国产a√精品区二区三区四区| 国产精品不卡在线| 影音先锋在线国产| 亚洲成人xxx| 最新超碰在线| 国产日韩一区在线| 精品盗摄女厕tp美女嘘嘘| 每日在线观看av| 国产精品综合视频| 五月天免费网站| 在线观看日韩电影| 青春草在线观看| 91国内揄拍国内精品对白| 无码国模国产在线观看| 一区高清视频| 蜜臀av一区二区在线免费观看| 玖玖爱在线观看| 天天综合色天天综合色h| www.狠狠干| 久久亚洲精品小早川怜子66| 成人精品一区二区三区电影| 免费日韩av电影| 噜噜噜久久亚洲精品国产品小说| yjizz视频| 亚洲第一狼人社区| 国产综合在线播放| 久久久久成人精品| y111111国产精品久久久| 成年人视频大全| 国产精品亚洲午夜一区二区三区 | 欧美另类变人与禽xxxxx| 波多野结衣在线影院| 国产精品1234| 精品香蕉视频| 91日韩视频在线观看| 国产精品色在线观看| 中文字幕欧美人妻精品一区蜜臀| 亚洲最新中文字幕| 国产精品美女午夜爽爽| 亚洲欧美日韩在线综合| 久久av中文字幕片| 91插插插插插插| 欧美不卡激情三级在线观看| 国产羞羞视频在线播放| 黄色99视频| 久久精选视频| 免费91在线观看| 欧美一二三区在线观看| 三级福利片在线观看| 国产综合 伊人色| 日韩精品免费专区| 日本裸体美女视频| 精品久久久久久久久久久久包黑料 | 国产精品免费人成网站| 一区二区三区免费观看视频| 久久综合伊人77777| 国产精品自在| 国产又黄又猛又粗又爽的视频| 国产精品免费视频网站| 国产黄色美女视频| 91精品国产91久久久久| 精品视频日韩| 中文在线字幕观看| 欧美性猛交xxxx乱大交| 最近高清中文在线字幕在线观看| 成人免费视频97| 亚洲黄色毛片| 国产无遮挡在线观看| 制服丝袜中文字幕亚洲| ririsao久久精品一区| 日本精品一区| 国产二区国产一区在线观看| 欧美亚洲精品天堂| 日韩中文娱乐网| ccyy激情综合| 精品中文字幕av| 亚洲精品va在线观看| 日韩精品视频在线观看一区二区三区| 国产精品福利网站| 合欧美一区二区三区| 亚洲黄色免费视频| 日韩精品一区二区三区视频| 成人免费无遮挡| 伊人网在线免费| 国产日韩精品久久久| www.五月激情| 国产精品免费一区二区三区都可以 | 日本久久综合网| 欧美激情亚洲激情| 久久精品国产www456c0m|