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

二叉樹的遞歸遍歷,套路都在這里

開發 前端
本篇將介紹前后中序的遞歸寫法,一些同學可能會感覺很簡單,其實不然,我們要通過簡單題目把方法論確定下來,有了方法論,后面才能應付復雜的遞歸。

[[410967]]

二叉樹的遞歸遍歷

這次我們要好好談一談遞歸,為什么很多同學看遞歸算法都是“一看就會,一寫就廢”。

主要是對遞歸不成體系,沒有方法論,每次寫遞歸算法 ,都是靠玄學來寫代碼,代碼能不能編過都靠運氣。

本篇將介紹前后中序的遞歸寫法,一些同學可能會感覺很簡單,其實不然,我們要通過簡單題目把方法論確定下來,有了方法論,后面才能應付復雜的遞歸。

這里幫助大家確定下來遞歸算法的三個要素。每次寫遞歸,都按照這三要素來寫,可以保證大家寫出正確的遞歸算法!

確定遞歸函數的參數和返回值:確定哪些參數是遞歸的過程中需要處理的,那么就在遞歸函數里加上這個參數, 并且還要明確每次遞歸的返回值是什么進而確定遞歸函數的返回類型。

確定終止條件:寫完了遞歸算法, 運行的時候,經常會遇到棧溢出的錯誤,就是沒寫終止條件或者終止條件寫的不對,操作系統也是用一個棧的結構來保存每一層遞歸的信息,如果遞歸沒有終止,操作系統的內存棧必然就會溢出。

確定單層遞歸的邏輯:確定每一層遞歸需要處理的信息。在這里也就會重復調用自己來實現遞歸的過程。

好了,我們確認了遞歸的三要素,接下來就來練練手:

以下以前序遍歷為例:

確定遞歸函數的參數和返回值:因為要打印出前序遍歷節點的數值,所以參數里需要傳入vector在放節點的數值,除了這一點就不需要在處理什么數據了也不需要有返回值,所以遞歸函數返回類型就是void,代碼如下:

  1. void traversal(TreeNode* cur, vector<int>& vec) 

確定終止條件:在遞歸的過程中,如何算是遞歸結束了呢,當然是當前遍歷的節點是空了,那么本層遞歸就要要結束了,所以如果當前遍歷的這個節點是空,就直接return,代碼如下:

  1. if (cur == NULLreturn

確定單層遞歸的邏輯:前序遍歷是中左右的循序,所以在單層遞歸的邏輯,是要先取中節點的數值,代碼如下:

  1. vec.push_back(cur->val);    // 中 
  2. traversal(cur->left, vec);  // 左 
  3. traversal(cur->right, vec); // 右 

單層遞歸的邏輯就是按照中左右的順序來處理的,這樣二叉樹的前序遍歷,基本就寫完了,在看一下完整代碼:

前序遍歷:

  1. class Solution { 
  2. public
  3.     void traversal(TreeNode* cur, vector<int>& vec) { 
  4.         if (cur == NULLreturn
  5.         vec.push_back(cur->val);    // 中 
  6.         traversal(cur->left, vec);  // 左 
  7.         traversal(cur->right, vec); // 右 
  8.     } 
  9.     vector<int> preorderTraversal(TreeNode* root) { 
  10.         vector<int> result; 
  11.         traversal(root, result); 
  12.         return result; 
  13.     } 
  14. }; 

那么前序遍歷寫出來之后,中序和后序遍歷就不難理解了,代碼如下:

中序遍歷:

  1. void traversal(TreeNode* cur, vector<int>& vec) { 
  2.     if (cur == NULLreturn
  3.     traversal(cur->left, vec);  // 左 
  4.     vec.push_back(cur->val);    // 中 
  5.     traversal(cur->right, vec); // 右 

后序遍歷:

  1. void traversal(TreeNode* cur, vector<int>& vec) { 
  2.     if (cur == NULLreturn
  3.     traversal(cur->left, vec);  // 左 
  4.     traversal(cur->right, vec); // 右 
  5.     vec.push_back(cur->val);    // 中 

此時大家可以做一做leetcode上三道題目,分別是:

  • 144.二叉樹的前序遍歷
  • 145.二叉樹的后序遍歷
  • 94.二叉樹的中序遍歷

可能有同學感覺前后中序遍歷的遞歸太簡單了,要打迭代法(非遞歸),別急,我們明天打迭代法,打個通透!

其他語言版本

Java:

  1. // 前序遍歷·遞歸·LC144_二叉樹的前序遍歷 
  2. class Solution { 
  3.     ArrayList<Integer> preOrderReverse(TreeNode root) { 
  4.         ArrayList<Integer> result = new ArrayList<Integer>(); 
  5.         preOrder(root, result); 
  6.         return result; 
  7.     } 
  8.  
  9.     void preOrder(TreeNode root, ArrayList<Integer> result) { 
  10.         if (root == null) { 
  11.             return
  12.         } 
  13.         result.add(root.val);           // 注意這一句 
  14.         preOrder(root.left, result); 
  15.         preOrder(root.right, result); 
  16.     } 
  17. // 中序遍歷·遞歸·LC94_二叉樹的中序遍歷 
  18. class Solution { 
  19.     public List<Integer> inorderTraversal(TreeNode root) { 
  20.         List<Integer> res = new ArrayList<>(); 
  21.         inorder(root, res); 
  22.         return res; 
  23.     } 
  24.  
  25.     void inorder(TreeNode root, List<Integer> list) { 
  26.         if (root == null) { 
  27.             return
  28.         } 
  29.         inorder(root.left, list); 
  30.         list.add(root.val);             // 注意這一句 
  31.         inorder(root.right, list); 
  32.     } 
  33. // 后序遍歷·遞歸·LC145_二叉樹的后序遍歷 
  34. class Solution { 
  35.     public List<Integer> postorderTraversal(TreeNode root) { 
  36.         List<Integer> res = new ArrayList<>(); 
  37.         postorder(root, res); 
  38.         return res; 
  39.     } 
  40.  
  41.     void postorder(TreeNode root, List<Integer> list) { 
  42.         if (root == null) { 
  43.             return
  44.         } 
  45.         postorder(root.left, list); 
  46.         postorder(root.right, list); 
  47.         list.add(root.val);             // 注意這一句 
  48.     } 

Python:

  1. # 前序遍歷-遞歸-LC144_二叉樹的前序遍歷 
  2. class Solution: 
  3.     def preorderTraversal(self, root: TreeNode) -> List[int]: 
  4.         # 保存結果 
  5.         result = [] 
  6.          
  7.         def traversal(root: TreeNode): 
  8.             if root == None: 
  9.                 return 
  10.             result.append(root.val) # 前序 
  11.             traversal(root.left)    # 左 
  12.             traversal(root.right)   # 右 
  13.  
  14.         traversal(root) 
  15.         return result 
  16.  
  17. # 中序遍歷-遞歸-LC94_二叉樹的中序遍歷 
  18. class Solution: 
  19.     def inorderTraversal(self, root: TreeNode) -> List[int]: 
  20.         result = [] 
  21.  
  22.         def traversal(root: TreeNode): 
  23.             if root == None: 
  24.                 return 
  25.             traversal(root.left)    # 左 
  26.             result.append(root.val) # 中序 
  27.             traversal(root.right)   # 右 
  28.  
  29.         traversal(root) 
  30.         return result 
  31.  
  32. # 后序遍歷-遞歸-LC145_二叉樹的后序遍歷 
  33. class Solution: 
  34.     def postorderTraversal(self, root: TreeNode) -> List[int]: 
  35.         result = [] 
  36.  
  37.         def traversal(root: TreeNode): 
  38.             if root == None: 
  39.                 return 
  40.             traversal(root.left)    # 左 
  41.             traversal(root.right)   # 右 
  42.             result.append(root.val) # 后序 
  43.  
  44.         traversal(root) 
  45.         return result 

 【編輯推薦】

 

責任編輯:姜華 來源: 代碼隨想錄
相關推薦

2018-03-19 14:43:28

2020-04-27 07:05:58

二叉樹左子樹右子樹

2021-09-15 07:40:50

二叉樹數據結構算法

2022-10-26 23:58:02

二叉樹數組算法

2021-04-20 08:37:14

數據結構二叉樹

2021-07-16 08:57:31

迭代遍歷二叉樹

2023-05-08 15:57:16

二叉樹數據結構

2021-09-15 07:56:32

二叉樹層次遍歷

2025-05-16 09:34:10

2021-01-13 10:03:36

二叉樹層序遍歷層次遍歷

2009-08-11 13:29:57

C#二叉樹遍歷

2024-07-02 11:16:21

2017-10-24 14:57:58

AI人工智能機器學習

2018-04-26 16:15:02

數據庫MySQLMySQL 8.0

2021-07-01 09:00:00

安全數字化轉型滲透

2021-04-19 07:47:42

數據結構二叉樹Tree

2021-08-06 11:34:05

二叉樹遞歸回溯

2024-01-23 12:54:00

C++編程語言代碼

2013-07-15 16:35:55

二叉樹迭代器

2021-04-28 20:12:27

數據結構創建
點贊
收藏

51CTO技術棧公眾號

h片在线观看视频免费免费| 欧类av怡春院| 3p视频在线观看| 国产伦理精品不卡| 久久久久久久久久久久av| 泷泽萝拉在线播放| 国产精品xnxxcom| 午夜亚洲福利老司机| 天堂资源在线亚洲视频| 粉嫩小泬无遮挡久久久久久| 老牛国产精品一区的观看方式| 久色乳综合思思在线视频| 无码人妻aⅴ一区二区三区 | 亚洲精品国产动漫| 欧美精品在线一区二区| 日本午夜激情视频| 久操视频在线观看| 国产日韩欧美一区二区三区综合| 国产成人女人毛片视频在线| 中文字幕一区二区久久人妻| 亚洲国产一区二区三区高清| 北条麻妃在线一区二区| 日韩人妻无码精品综合区| 日本成人手机在线| 欧美日韩国产在线观看| 男人天堂999| 国产高清中文字幕在线| 亚洲人精品一区| 免费中文日韩| 亚洲欧美另类视频| 国产一区二区三区蝌蚪| 国产精品欧美一区二区三区奶水| 中文字幕超碰在线| 婷婷精品进入| 色999日韩欧美国产| 久久精品—区二区三区舞蹈| 欧美绝顶高潮抽搐喷水合集| 精品国产乱码久久久久久图片| 亚洲高清视频免费| 四虎成人精品一区二区免费网站| 91国偷自产一区二区开放时间| 欧美丰满熟妇bbbbbb百度| www555久久| 亚洲欧美激情视频在线观看一区二区三区 | 国产精品xxx在线观看| 欧美一区中文字幕| 992kp免费看片| 性欧美xxxx大乳国产app| 欧美日韩一卡二卡| 91淫黄看大片| 欧美影视资讯| 91福利精品第一导航| 99999精品视频| 中文日产幕无线码一区二区| 岛国av在线不卡| 女性女同性aⅴ免费观女性恋| av漫画网站在线观看| 亚洲一二三四久久| 无码粉嫩虎白一线天在线观看| 欧美色图天堂| 亚洲国产精品一区二区www在线| 99热这里只有精品免费| 老司机在线看片网av| 中文字幕一区在线| 国产卡一卡二在线| 日本大胆在线观看| 亚洲一区二区三区爽爽爽爽爽| 日本大片免费看| 草草在线视频| 欧美视频在线看| 凹凸国产熟女精品视频| 日韩一区二区三区在线免费观看| 欧美午夜精品久久久久久超碰 | 亚洲一区二区在线看| 一广人看www在线观看免费视频| 中文字幕亚洲在| 国产一区二区四区| 午夜影院一区| 欧美日韩美少妇| 久久久久久久久久久影视| 国产精品白丝一区二区三区| 亚洲欧美精品在线| 网站永久看片免费| 亚洲无毛电影| 国产精品成人一区二区三区吃奶| 96亚洲精品久久久蜜桃| 成人动漫av在线| 日本一区二区三不卡| 久操视频在线播放| 懂色aⅴ精品一区二区三区蜜月| 五月婷婷狠狠操| 榴莲视频成人app| 日韩精品免费一线在线观看| 成人免费视频入口| 亚洲二区在线| 91精品国产综合久久男男| 欧洲精品久久一区二区| 欧美国产一区二区| 欧美与动交zoz0z| 2022成人影院| 日韩精品一区二区三区中文精品| 极品粉嫩小仙女高潮喷水久久| 99视频精品全国免费| 96精品视频在线| 国产视频手机在线| 国产视频一区在线观看| 欧美日韩不卡在线视频| 久久久久久久性潮| 精品亚洲男同gayvideo网站| 一区二区三区四区五区| 在线亚洲自拍| 97se亚洲综合| 生活片a∨在线观看| 精品国产乱码久久久久久天美| 小早川怜子一区二区三区| 一本色道久久综合亚洲精品酒店| 欧美日本在线视频中文字字幕| 精品国产www| 91偷拍与自偷拍精品| 日韩一级特黄毛片| 亚洲图片小说区| 国产一区二区三区在线视频| 91香蕉在线视频| 国产白丝精品91爽爽久久 | 一区在线播放| 91中文字幕在线观看| av影片在线看| 日本福利一区二区| 性欧美丰满熟妇xxxx性仙踪林| 国产一区欧美| 91入口在线观看| 麻豆视频在线观看免费网站| 欧美性大战久久| 日韩在线免费观看av| aa级大片欧美三级| 国产一区国产精品| 超碰在线cao| 亚洲精品在线一区二区| 久久亚洲AV无码| 国产成人免费av在线| 狠狠干视频网站| 国产美女视频一区二区 | 日韩免费中文专区| 亚洲承认视频| 国产一区二区三区三区在线观看| 日本三级一区二区| 99久久精品国产麻豆演员表| 亚洲熟妇无码一区二区三区| 中文字幕av一区二区三区四区| 欧美高清视频在线观看| www.午夜激情| 午夜精品一区二区三区三上悠亚 | 国产伦理一区二区| 亚洲美腿欧美偷拍| 亚洲欧洲日韩综合| 国产69精品久久久久99| 日韩av男人天堂| 99精品在线免费| 国产h视频在线播放| 成人自拍在线| 97超碰蝌蚪网人人做人人爽| 亚州精品国产精品乱码不99按摩| 福利微拍一区二区| 中文字幕在线免费看线人| 午夜在线视频观看日韩17c| 农村寡妇一区二区三区| 欧美不卡高清一区二区三区| 深夜福利国产精品| 精品国产伦一区二区三区| 亚洲一区二区在线视频| 日韩 中文字幕| 日精品一区二区三区| 亚洲午夜精品久久久中文影院av| 国产亚洲字幕| 91精品国产91久久久久久久久 | 99国产精品99久久久久久| 男人天堂网视频| 欧美3p视频| 国产成人免费电影| 天堂久久午夜av| 久久国产精品电影| 三区在线视频| 欧美日韩免费观看一区三区| 国产亚洲成人精品| 国产亚洲欧洲997久久综合 | 九色自拍视频在线观看| 精品国产一区二区三区| 91深夜福利视频| 自拍偷拍亚洲视频| 久久久av一区| 邻居大乳一区二区三区| 欧美一区二区三区啪啪| 精品免费囯产一区二区三区 | 亚洲欧美在线观看视频| 国产精品理论片| 欧美xxxxx精品| 久久国内精品视频| 女性女同性aⅴ免费观女性恋| 无码一区二区三区视频| 久久66热这里只有精品| 国产成年精品| 国产91精品久久久久| 国产调教视频在线观看| 亚洲色图国产精品| 刘亦菲毛片一区二区三区| 欧美色男人天堂| 日韩三级视频在线| 亚洲视频在线一区二区| 精品国产av无码| 成人一区二区三区在线观看| 色婷婷狠狠18| 免费亚洲一区| 真人抽搐一进一出视频| 99视频精品全国免费| 欧美久久久久久一卡四| 国内精品免费| 成人精品电影在线观看| 久久久999免费视频| 亚洲国产精品久久久久蝴蝶传媒| 欧美日韩免费高清| 1769国产精品视频| 91免费精品视频| 青青在线精品| 国产精品日韩专区| 美女福利一区二区三区| 91精品国产91久久久久久最新| 污污视频在线看| 另类天堂视频在线观看| av网站无病毒在线| 中文字幕亚洲色图| 日韩欧美在线番号| 亚洲国产天堂久久国产91 | 毛片av在线播放| 91精品啪在线观看国产81旧版| 亚洲午夜在线观看| 日韩不卡一区| 亚洲精品9999| 日韩夫妻性生活xx| 五月天久久狠狠| 日韩av片子| 香蕉精品视频在线| 欧美电影一二区| 综合色婷婷一区二区亚洲欧美国产| 成人高清电影网站| 色播亚洲婷婷| 久久国产亚洲| 综合网五月天| 欧美在线三区| 欧美日韩dvd| 黄色亚洲精品| 中文字幕无码精品亚洲资源网久久| 国产精品videossex久久发布| 国产成人一区二区三区别| 婷婷亚洲最大| youjizz.com在线观看| 国模 一区 二区 三区| 精品视频在线观看一区| 国产精品综合色区在线观看| 日韩一级免费在线观看| 免费不卡在线视频| 下面一进一出好爽视频| 成人免费视频网站在线观看| 亚洲av无码一区二区三区观看 | 丰满少妇被猛烈进入一区二区| 一区二区三区中文字幕电影| 国产一级视频在线播放| 欧美视频中文在线看| 午夜一区二区三区四区| 91精品麻豆日日躁夜夜躁| 亚洲国产精品久久人人爱潘金莲| 亚洲精品乱码久久久久久金桔影视| 日韩美女一级视频| 色视频www在线播放国产成人| dy888亚洲精品一区二区三区| 孩xxxx性bbbb欧美| ww久久综合久中文字幕| 亚洲a中文字幕| 欧美大胆视频| 亚洲第一综合| 在线欧美日韩| 黄色一级二级三级| 国产精品18久久久久久久久 | 一区二区三区影院| 免费在线观看黄网站| 欧美日韩三级一区| 免费观看黄一级视频| 亚洲午夜精品久久久久久性色| 超碰在线免费公开| 欧美一区二区色| 精品成人18| 欧美三级华人主播| 欧美一区二区三区另类 | 日本一区二区网站| 欧美日韩一区二区不卡| 天堂8在线视频| www国产精品视频| 草草视频在线观看| 91免费看片网站| 精品国精品国产自在久国产应用| 少妇大叫太大太粗太爽了a片小说| 久久先锋影音| 精品人妻伦一二三区久| 中文字幕一区二区三区不卡| 亚洲午夜18毛片在线看| 欧美一级黄色录像| av在线日韩国产精品| 亚洲**2019国产| 久久免费精品| 亚洲欧洲精品一区二区| 亚洲女优在线| 东京热av一区| 亚洲欧美日韩在线不卡| 国产精品传媒在线观看| 日韩av网站在线| aa级大片免费在线观看| 国产三级精品网站| 欧美伦理影院| 亚洲熟女乱色一区二区三区| 国产91对白在线观看九色| 影音先锋男人资源在线观看| 色婷婷综合激情| 肉丝一区二区| 51久久精品夜色国产麻豆| 51亚洲精品| 黄色成人在线免费观看| 国产酒店精品激情| av激情在线观看| 4438x成人网最大色成网站| 777电影在线观看| 国产精品一区二区三区成人| 久草在线成人| 91在线视频观看免费| 久久久久高清精品| 亚洲婷婷综合网| 亚洲欧美国产精品久久久久久久| 国产99在线观看| 激情小说综合网| 国产亚洲午夜| 亚洲天堂网一区二区| 欧美日韩综合视频| 日本天堂在线| 国产成人精品久久久| 欧美男同视频网| 九热视频在线观看| 中文一区在线播放| 亚洲综合免费视频| 久久精品99国产精品酒店日本| 最新亚洲国产| 欧美性受黑人性爽| 国产成人亚洲精品青草天美 | 欧美丝袜丝交足nylons图片| 成年人在线看| 成人黄色免费网站在线观看| 66国产精品| 久久久久无码国产精品一区李宗瑞| 亚洲一区二区中文在线| 四虎影视在线观看2413| 日本一区二区三区四区视频| 精品日韩在线| 亚洲一级片av| 亚洲一区二区高清| 肉丝一区二区| 国产精品一区=区| 在线免费观看日本欧美爱情大片| 国产精品91av| 一本色道久久综合精品竹菊| av播放在线| 岛国一区二区三区高清视频| 在线综合欧美| 欧美美女性生活视频| 日韩免费观看高清完整版在线观看| 韩日毛片在线观看| 亚洲国产一区二区精品视频| 国产一区二区调教| 国产精品视频久久久久久久| 亚洲性无码av在线| 日本一区二区三区视频在线看| 自拍日韩亚洲一区在线| 国产精品免费丝袜| www.黄色片| 国产精品久久久久秋霞鲁丝| 欧美福利在线| 99久久精品免费视频| 日韩欧美一二区| 欧美一级二级视频| 久久久久久久久网| 国产亚洲一区二区三区四区| 国产美女永久免费| 欧美壮男野外gaytube| 影音先锋日韩精品| 国产熟妇搡bbbb搡bbbb| 欧美一区二区三区的| 三上悠亚亚洲一区| 污污污污污污www网站免费| 国产欧美精品在线观看| 成人av无码一区二区三区| 国产精品video| 亚洲第一黄网| 欧洲猛交xxxx乱大交3| 中国china体内裑精亚洲片|