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

二叉搜索樹轉換為雙向鏈表

開發 前端
輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的循環雙向鏈表。要求不能創建任何新的節點,只能調整樹中節點指針的指向。

[[438991]]

Leetcode : https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/

“GitHub : https://github.com/nateshao/leetcode/blob/main/algo-notes/src/main/java/com/nateshao/sword_offer/topic_29_treeToDoublyList/Solution.java

二叉搜索樹轉換為雙向鏈表

“題目描述 :輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的循環雙向鏈表。要求不能創建任何新的節點,只能調整樹中節點指針的指向。為了讓您更好地理解問題,以下面的二叉搜索樹為例:難度:中等

我們希望將這個二叉搜索樹轉化為雙向循環鏈表。鏈表中的每個節點都有一個前驅和后繼指針。對于雙向循環鏈表,第一個節點的前驅是最后一個節點,最后一個節點的后繼是第一個節點。下圖展示了上面的二叉搜索樹轉化成的鏈表。“head” 表示指向鏈表中有最小元素的節點。

特別地,我們希望可以就地完成轉換操作。當轉化完成以后,樹中節點的左指針需要指向前驅,樹中節點的右指針需要指向后繼。還需要返回鏈表中的第一個節點的指針。

解題思路:

本文解法基于性質:二叉搜索樹的中序遍歷為 遞增序列 。將 二叉搜索樹 轉換成一個 “排序的循環雙向鏈表” ,其中包含三個要素:

  • 排序鏈表: 節點應從小到大排序,因此應使用 中序遍歷 “從小到大”訪問樹的節點。
  • 雙向鏈表: 在構建相鄰節點的引用關系時,設前驅節點 pre和當前節點 cur,不僅應構建 pre.right = cur ,也應構建 cur.left = pre 。
  • 循環鏈表: 設鏈表頭節點 head 和尾節點 tail ,則應構建 head.left = tail 和 tail.right = head 。

  • 算法流程:dfs (cur):遞歸法中序遍歷;
  • 終止條件: 當節點cur為空,代表越過葉節點,直接返回;
  • 遞歸左子樹,即 dfs(cur. left) ;
    • 構建鏈表:
    • 當 pre 為空時:代表正在訪問鏈表頭節點,記為head ;
    • 當 pre 不為空時:修改雙向節點引用,即pre.right = cur,cur. left = pre ;
  • 保存cur:更新pre=cur,即節點cur后繼節點的pre;
  • 遞歸右子樹,即dfs(cur. right) ; treeToDoublyList (root):
  • 特例處理: 若節點root 為空,則直接返回;
  • 初始化: 空節點pre ;
  • 轉化為雙向鏈表: 調用dfs(root) ;
  • 構建循環鏈表: 序遍歷完成后,head 指向頭節點,pre 指向尾節點,因此修改head 和pre的雙向節點引用即可;
  • 返回值: 返回鏈表的頭節點head 即可;

復雜度分析:

  • 時間復雜度0(N) :N為二叉樹的節點數,中序遍歷需要訪問所有節點。
  • 空間復雜度O(N) :最差情況下,即樹退化為鏈表時,遞歸深度達到N,系統使用0(N)棧空間。
  1. package com.nateshao.sword_offer.topic_29_treeToDoublyList; 
  2. /** 
  3.  * @date Created by 邵桐杰 on 2021/12/2 15:31 
  4.  * @微信公眾號 程序員千羽 
  5.  * @個人網站 www.nateshao.cn 
  6.  * @博客 https://nateshao.gitee.io 
  7.  * @GitHub https://github.com/nateshao 
  8.  * @Gitee https://gitee.com/nateshao 
  9.  * Description: 二叉搜索樹與雙向鏈表 
  10.  */ 
  11. public class Solution { 
  12.  
  13.     // 1. 中序,遞歸,來自解題大佬 
  14.     Node pre, head; 
  15.     public Node treeToDoublyList(Node root) { 
  16.         // 邊界值 
  17.         if(root == nullreturn null
  18.         dfs(root); 
  19.  
  20.         // 題目要求頭尾連接 
  21.         head.left = pre; 
  22.         pre.right = head; 
  23.         // 返回頭節點 
  24.         return head; 
  25.     } 
  26.     void dfs(Node cur) { 
  27.         // 遞歸結束條件 
  28.         if(cur == nullreturn
  29.         dfs(cur.left); 
  30.         // 如果pre為空,就說明是第一個節點,頭結點,然后用head保存頭結點,用于之后的返回 
  31.         if (pre == null) head = cur; 
  32.             // 如果不為空,那就說明是中間的節點。并且pre保存的是上一個節點, 
  33.             // 讓上一個節點的右指針指向當前節點 
  34.         else if (pre != null) pre.right = cur; 
  35.         // 再讓當前節點的左指針指向父節點,也就連成了雙向鏈表 
  36.         cur.left = pre; 
  37.         // 保存當前節點,用于下層遞歸創建 
  38.         pre = cur; 
  39.         dfs(cur.right); 
  40.     } 
  41.  
  42.  
  43.     /** 
  44.      * 思路:定義一個鏈表的尾節點,遞歸處理左右子樹,最后返回鏈表的頭節點 
  45.      * 
  46.      * @param pRootOfTree 
  47.      * @return 
  48.      */ 
  49.     public Node Convert(Node pRootOfTree) { 
  50.         Node lastlist = coverNode(pRootOfTree, null); 
  51.         Node pHead = lastlist; 
  52.         while (pHead != null && pHead.left != null) pHead = pHead.left
  53.         return pHead; 
  54.  
  55.     } 
  56.  
  57.     public Node coverNode(Node root, Node lastlist) { 
  58.         if (root == nullreturn null
  59.         Node cur = root; 
  60.         if (cur.left != null) coverNode(cur.left, lastlist); 
  61.         cur.left = lastlist; 
  62.         if (lastlist != null) lastlist.right = cur; 
  63.         lastlist = cur; 
  64.         if (cur.right != null) lastlist = coverNode(cur.right, lastlist); 
  65.         return lastlist; 
  66.     } 
  67.  
  68.  
  69.     class Node { 
  70.         public int val; 
  71.         public Node left
  72.         public Node right
  73.  
  74.         public Node() { 
  75.         } 
  76.  
  77.         public Node(int _val) { 
  78.             val = _val; 
  79.         } 
  80.  
  81.         public Node(int _val, Node _left, Node _right) { 
  82.             val = _val; 
  83.             left = _left; 
  84.             right = _right; 
  85.         } 
  86.     } 

 

責任編輯:武曉燕 來源: 程序員千羽
相關推薦

2022-12-26 00:51:33

雙向鏈表二叉搜索樹

2021-09-07 11:01:41

二叉搜索樹序數組

2021-08-31 11:35:24

二叉搜索樹迭代法公共祖先

2021-09-02 11:31:28

二叉搜索樹迭代法公共祖先

2022-01-11 10:01:25

二叉搜索樹數量

2023-07-31 08:01:13

二叉搜索測試

2021-09-03 08:58:00

二叉搜索樹節點

2020-04-27 07:05:58

二叉樹左子樹右子樹

2024-01-17 07:36:50

二叉搜索聯系簿

2021-08-26 11:31:11

二叉樹數據結構算法

2023-02-13 08:02:08

哈希函數哈希表搜索樹

2021-10-11 06:38:52

遞歸二叉搜索樹

2020-10-11 16:56:48

二叉搜索樹代碼開發

2021-09-06 10:38:50

二叉搜索樹遞歸

2021-04-06 08:20:24

二叉搜索樹數據結構算法

2020-09-23 18:25:40

算法二叉樹多叉樹

2023-08-29 08:31:13

B+樹數據索引

2021-09-29 10:19:00

算法平衡二叉樹

2021-03-17 08:19:22

二叉樹LeetCode

2013-07-15 16:35:55

二叉樹迭代器
點贊
收藏

51CTO技術棧公眾號

7777精品伊人久久久大香线蕉| 欧美va亚洲va日韩∨a综合色| 黄色一区二区在线| 欧美日韩高清在线一区| 最新黄色网址在线观看| 欧美jizz18hd性欧美| 激情深爱一区二区| 57pao成人国产永久免费| 成人精品999| 日韩不卡在线视频| 欧美视频专区一二在线观看| 日韩视频在线观看视频| 亚洲av成人无码网天堂| 久久97超碰国产精品超碰| 午夜精品一区二区三区在线视频 | 黄色成人91| 亚洲色图国产精品| 麻豆短视频在线观看| 亚洲奶水xxxx哺乳期| 久久久国产精品午夜一区ai换脸| 91影视免费在线观看| 亚洲免费在线观看av| 亚洲精品成人无限看| 亚洲欧美另类人妖| 蜜桃色一区二区三区| 成人影院在线免费观看| 天天色 色综合| avove在线观看| av大全在线免费看| 久久亚洲欧美国产精品乐播| 91亚洲精品丁香在线观看| jizz国产在线| 久久久水蜜桃av免费网站| 亚洲精品v天堂中文字幕| 国产成人美女视频| 成人黄色免费观看| 色哟哟国产精品免费观看| 欧美二区在线看| 亚洲精品喷潮一区二区三区| 久久er99精品| 国产精品免费久久久久影院| 色av性av丰满av| 亚洲美女色禁图| 色综合久久悠悠| 国产xxx在线观看| 亚洲精品777| 欧美午夜不卡在线观看免费| 国产xxxxx在线观看| 好吊日av在线| 亚洲国产裸拍裸体视频在线观看乱了| 99久re热视频精品98| 一区二区三区视频网站| 亚洲国产高清不卡| 成人欧美一区二区三区在线湿哒哒| 精品国产一区二区三区四| 国产日本精品| 91精品国产色综合久久不卡98口 | 国产精品扒开腿做爽爽爽视频| 国产奶水涨喷在线播放| 亚洲视频精品| 久久久久久久久久久亚洲| 久久久久久久国产视频| 欧美日韩理论| 97在线观看免费高清| 国产在线欧美在线| 国产不卡一二三区| 亚洲精品网址在线观看| www.色多多| 久久久久久毛片免费看 | 中文字幕人妻丝袜乱一区三区 | 污污网站免费看| 日韩美女在线| 欧美一区二区三区视频在线| 日本日本19xxxⅹhd乱影响| aa国产成人| 色综合中文字幕国产| 五月天婷婷激情视频| 99在线播放| 久久久91精品国产一区二区精品| 免费一区二区三区在在线视频| 毛片在线能看| 日韩理论在线观看| 女人被男人躁得好爽免费视频| av中文资源在线资源免费观看| 欧美午夜精品伦理| 亚洲天堂网2018| 精品精品国产毛片在线看| 精品亚洲aⅴ在线观看| 成人小视频免费看| 午夜日韩在线| 日韩av免费一区| 国产人妻精品一区二区三| 国产99久久久国产精品免费看| 久久综合中文色婷婷| caoporn国产精品免费视频| 亚洲欧美另类在线| 亚洲精品无码久久久久久| 日本精品久久| 日韩电影第一页| 国产大屁股喷水视频在线观看| 欧美日韩国产亚洲一区| 日韩美女视频中文字幕| 国产欧美日韩综合精品一区二区三区 | jizz一区二区| 在线观看福利一区| 三级在线观看视频| 欧美三级在线看| 日韩精品人妻中文字幕有码 | 日韩三级一区二区三区| 日本麻豆一区二区三区视频| 成人在线视频网址| www.av在线播放| 亚洲成a人片在线不卡一二三区| 波多野结衣xxxx| 日韩有码一区| 欧美高跟鞋交xxxxhd| 中文字字幕在线观看| 99久久久无码国产精品| 精品免费久久久久久久| 不卡亚洲精品| 亚洲欧洲午夜一线一品| 国产一级在线观看视频| 韩国女主播成人在线观看| 欧美精品一区二区三区在线四季| 亚洲wwwww| 在线播放一区二区三区| 欧美三级视频网站| 久久精品电影| 久久99影院| 18video性欧美19sex高清| 欧美一区二区播放| 天堂网av2018| 毛片av中文字幕一区二区| 国产精品日韩一区| 亚洲av成人精品毛片| 亚洲国产视频一区二区| 亚洲精品在线网址| 国产精品久久久久久麻豆一区软件 | 青青草97国产精品免费观看无弹窗版| 久久国产主播精品| 91福利在线免费| 精品国产乱码久久久久久老虎| 成人涩涩小片视频日本| 久久99久久99小草精品免视看| 日韩国产美国| 韩国成人在线| 伊人男人综合视频网| 精品不卡一区二区| 久久久久国产精品厨房| 大肉大捧一进一出好爽动态图| 久久悠悠精品综合网| 午夜精品一区二区三区视频免费看 | 男人晚上看的视频| 韩国一区二区在线观看| 一区精品在线| 精品国产18久久久久久二百| 久久亚洲精品小早川怜子66| 国产精品爽爽久久久久久| 亚洲欧美日韩在线不卡| 手机在线播放av| 亚洲调教视频在线观看| 国产日韩二区| 九九热线视频只有这里最精品| 亚洲天堂影视av| 这里只有精品999| 中文字幕一区二区三区在线不卡 | www.亚洲成人网| 91精品导航| 2020久久国产精品| 成人一区二区不卡免费| 欧美精品1区2区3区| 中文字幕av久久爽av| 成人av免费观看| 毛片av免费在线观看| 日本久久精品| yellow视频在线观看一区二区| av色在线观看| 亚洲午夜激情免费视频| 国产又粗又黄又爽| 亚洲国产精品天堂| 亚洲人成人无码网www国产 | 成人avav影音| www黄色av| 99免费精品| 国产精品12| jizz亚洲女人高潮大叫| 欧美精品一区在线播放| 三区在线视频| 五月天欧美精品| 97人妻人人揉人人躁人人| 国产一区二区三区综合| 视频在线99re| 午夜久久中文| 精品国产美女在线| 五月天婷婷社区| 欧美日韩视频一区二区| 欧美一级高潮片| 国产欧美日韩综合| 亚洲视频天天射| 老司机午夜免费精品视频| 9色视频在线观看| 视频一区在线观看| 国产成人精品福利一区二区三区| 日韩电影免费观看高清完整版| 久青草国产97香蕉在线视频| 日韩福利一区二区| 4438成人网| 婷婷激情五月综合| 亚洲成人免费在线观看| 欧美福利在线视频| 91在线你懂得| japan高清日本乱xxxxx| 日本成人在线不卡视频| 亚洲 欧美 日韩 国产综合 在线 | 国产99免费视频| 午夜视频一区二区三区| 五月天色婷婷丁香| 国产日韩视频一区二区三区| 国产精品一区二区无码对白| 亚洲承认在线| 艳母动漫在线观看| 欧美久久精品一级c片| 国产欧美一区二区三区不卡高清| 精品视频一区二区三区在线观看| 日韩免费精品视频| av中文资源在线资源免费观看| 久久综合久中文字幕青草| 成人h小游戏| 日韩激情在线视频| 欧美一级特黄aaaaaa大片在线观看| 欧美欧美欧美欧美首页| 337p粉嫩色噜噜噜大肥臀| 亚洲 欧美综合在线网络| 国产一区二区三区在线视频观看| 国产精品免费观看视频| 一级黄色片大全| www.久久久久久久久| fc2成人免费视频| 国产福利91精品一区| 超碰91在线播放| 国产精品一区在线| 亚洲男人天堂2021| 国产一区美女在线| 亚洲精品乱码久久久久久动漫| 美女一区二区视频| 小泽玛利亚视频在线观看| 青娱乐精品在线视频| 可以免费在线看黄的网站| 日韩激情一区二区| 精品久久久久久中文字幕2017| 首页欧美精品中文字幕| 免费观看成人在线视频| 免费观看在线色综合| 三上悠亚在线一区二区| 九九视频精品免费| 911av视频| 亚洲精品资源| 国产黄页在线观看| 亚洲综合激情| 蜜臀久久99精品久久久酒店新书| 性久久久久久| 亚洲少妇第一页| 麻豆91在线播放| 亚洲制服在线观看| 国产98色在线|日韩| www.日本高清| 国产视频一区二区在线观看| 国产精品成人在线视频| 亚洲视频在线观看三级| 青娱乐国产精品| 精品福利在线观看| 亚洲精品国产精品乱码视色| 欧美喷水一区二区| 欧美综合视频在线| 亚洲午夜av久久乱码| 黄色动漫在线观看| 91国内产香蕉| yy6080久久伦理一区二区| 91传媒免费看| 亚洲精品小区久久久久久| 岛国视频一区| 亚洲另类春色校园小说| 亚洲国产一区在线| 欧美日韩天堂| 亚洲人成色77777| 国产一区二区电影| 欧美 变态 另类 人妖| 国产成人精品免费| 成人h动漫精品一区| 国产精品九色蝌蚪自拍| 五月天婷婷丁香| 欧美三级在线视频| 四虎免费在线观看| 久久精品国产精品| 男人的天堂在线视频免费观看| 欧美国产日韩免费| jizz久久久久久| 国产在线一区二区三区播放| 日韩精品免费| 国产人妻777人伦精品hd| 毛片av一区二区| 30一40一50老女人毛片| 日韩美女啊v在线免费观看| 精品国产免费观看| 欧美丰满一区二区免费视频| 亚洲日本香蕉视频| 欧美尺度大的性做爰视频| 免费观看一级欧美片| 91嫩草在线| 色婷婷色综合| 欧美日韩第二页| 国产91精品一区二区麻豆网站| 亚洲一二三精品| 欧美性20hd另类| 全国男人的天堂网| 久久亚洲成人精品| a成人v在线| 女人一区二区三区| 亚洲经典自拍| 国产精品91av| 亚洲欧美日韩电影| 亚洲一区二区三区高清视频| 亚洲人成啪啪网站| 三级在线观看视频| 国产视频精品网| 午夜精品久久| 波多野结衣在线免费观看| 中文字幕色av一区二区三区| 中文字幕免费高清网站| 日韩不卡在线观看| 三级在线看中文字幕完整版| 国产精品国产三级国产专区53 | 久久99久久98精品免观看软件 | 日本激情一区二区三区| 欧美成人久久久| 成人污版视频| 综合久久国产| 极品尤物av久久免费看| 性少妇xx生活| 欧美人与禽zozo性伦| 亚洲免费视频一区二区三区| 国产欧美一区二区三区久久| 国产999精品在线观看| 亚洲看片网站| 久久精品国内一区二区三区 | 亚洲国产一区二区视频| 精品国自产在线观看| 欧美成人午夜免费视在线看片| 在线免费成人| 亚洲精品少妇一区二区| 国产不卡在线视频| 亚洲国产精品午夜在线观看| 亚洲精品电影网在线观看| 免费h视频在线观看| 欧美高清性xxxxhd | 亚洲va欧美va人人爽午夜| 亚洲欧美黄色片| 国内自拍欧美激情| 综合色就爱涩涩涩综合婷婷| 那种视频在线观看| 国产欧美日韩另类一区| 在线观看国产小视频| 久久久精品一区二区| 日韩区欧美区| 你懂的av在线| 中文字幕二三区不卡| 国产又大又粗又硬| 欧美黑人巨大精品一区二区| 成人h动漫免费观看网站| 欧美日韩国产精品激情在线播放| 久久夜色精品国产欧美乱极品| 欧美黄色一级大片| 日韩一区二区欧美| 91精品入口| 日韩一级在线免费观看| 国产精品另类一区| 亚洲精品97久久中文字幕无码| 91成人在线观看国产| 日韩a一区二区| 国产女主播在线播放| 色婷婷综合视频在线观看| 日本福利在线| 国产区日韩欧美| 久久99精品一区二区三区三区| 国产一级片免费看| 国产亚洲精品久久久久久| 精品国产亚洲日本| 免费观看精品视频| 亚洲欧美国产高清| 久香视频在线观看| 91最新在线免费观看| 在线综合亚洲| 麻豆天美蜜桃91| 亚洲黄色av女优在线观看 | 国产一区二区三区久久| 亚洲图片第一页| 亚洲国产精品va在线看黑人动漫| 国产成人77亚洲精品www| 国产曰肥老太婆无遮挡| 国产精品国产精品国产专区不蜜|