亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift算法之二叉樹實現的方法示例

2020-03-09 17:45:29
字體:
來源:轉載
供稿:網友

一、概述

二叉樹的結構一般是以二叉鏈表的形式來存儲的。二叉鏈表的結構類似于雙向鏈表,二叉鏈表的節點也是有兩個結點指針的,一個指向左子樹,一個指向右子樹。二叉樹主要有四種遍歷方式:先序遍歷、中序遍歷、后序遍歷、層次遍歷。關于二叉樹的內容網上有很多,這里不再做過多的陳述。

本文將用Swift去實現二叉樹的創建、四種遍歷方式等。下面的實現部分內容參考了青玉伏案和唐巧兩位大神相關的文章。

二、實現思路及代碼

以下面二叉樹為例:

swift,二叉樹,二叉樹算法,排序算法

先序遍歷:先遍歷根節點然后再遍歷左子樹,最后遍歷右子樹。

swift,二叉樹,二叉樹算法,排序算法

故上面先序遍歷的順序為: A B D E C F

不過為了看到更詳細的步驟可以把上面 C 結點的左子節點的 value 值打印為#號,類似的D、E、F也一樣,他們的左右子節點的 value 值都打印為#號,則打印結果為:A B D # # E # # C # F # #

中序遍歷:先遍歷左子樹,然后遍歷根節點,最后遍歷右子樹。

swift,二叉樹,二叉樹算法,排序算法

故上面先序遍歷的順序為:# D # B # E # A # C # F #

后序遍歷:后序遍歷是先遍歷左子樹,然后再遍歷右子樹,最后遍歷根節點

swift,二叉樹,二叉樹算法,排序算法

故上面先序遍歷的順序為:# # D # # E B # # # F C A

層次遍歷:層次遍歷相對上面的幾個遍歷實現起來要稍微復雜,層次遍歷就是圖中以二叉樹的根節點為起始節點的廣度搜索(BFS)

swift,二叉樹,二叉樹算法,排序算法

故上面先序遍歷的順序為:A B C D E # F # # # # # #

下面為上述幾種遍歷的Swift實現:

class BinaryTreeNote{  var value:String var leftChild:BinaryTreeNote? var rightChild:BinaryTreeNote?  init(_ value:String) { self.value = value } }  class BinaryTreeHelper{  var array:[String] var index = -1  init(_ array:[String]) { self.array = array }  //創建二叉樹 func createTree() -> BinaryTreeNote? {  self.index = self.index + 1 if index < self.array.count && index >= 0 {   let value = self.array[index]    if value == "" {  return nil  } else {  let note = BinaryTreeNote(value)  note.leftChild = createTree()  note.rightChild = createTree()  return note  } } return nil; }  //先序遍歷二叉樹 func preOrderTraverse(_ note:BinaryTreeNote?){  if note == nil {  print("#")  return } print(note!.value) preOrderTraverse(note!.leftChild) preOrderTraverse(note!.rightChild) }  //中序遍歷二叉樹 func inOrderTraverse (_ note: BinaryTreeNote?) { if note == nil {  print("#")  return } inOrderTraverse(note!.leftChild) print(note!.value) inOrderTraverse(note!.rightChild) }  //后序遍歷二叉樹 func afterOrderTraverse (_ note: BinaryTreeNote?) { if note == nil {  print("#")  return } afterOrderTraverse(note!.leftChild) afterOrderTraverse(note!.rightChild) print(note!.value) }  //層次遍歷二叉樹 func levelOrder(_ root: BinaryTreeNote?){  var result = [[BinaryTreeNote]]() var level = [BinaryTreeNote]()  level.append(root!) while level.count != 0 {  result.append(level)  var nextLevel = [BinaryTreeNote]()  for node in level {  if let leftNode = node.leftChild {   nextLevel.append(leftNode)  }  if let rightNode = node.rightChild {   nextLevel.append(rightNode)  }  }  level = nextLevel }  let ans = result.map { $0.map { $0.value }} print(ans) }  }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者使用swift/80097.html">swift能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合最新在线| 一区二区三区美女xx视频| 日本精品免费一区二区三区| 一本色道久久综合狠狠躁篇怎么玩| 欧美日韩国产在线播放| 国产精品一区二区三区成人| 日韩视频免费大全中文字幕| 国产精品久久久久久五月尺| 亚洲影院在线看| 欧美日韩视频免费播放| 成人激情在线播放| 91精品成人久久| 亚洲丝袜一区在线| 国产精品国模在线| 精品国产一区二区三区久久久| 亚洲综合色av| 色婷婷综合久久久久| 精品成人国产在线观看男人呻吟| 欧美高清第一页| 欧美激情免费观看| 国产精品久在线观看| 国产精品毛片a∨一区二区三区|国| 久久久久久久国产| 亚洲香蕉av在线一区二区三区| 国产日韩中文字幕在线| 亚洲电影免费观看高清完整版在线| 欧美成年人视频网站欧美| 久久影院模特热| 欧美色xxxx| 国内精品久久久久伊人av| 国产精品扒开腿做爽爽爽视频| 成人免费视频网址| 一本一本久久a久久精品牛牛影视| 欧美日韩在线免费观看| 亚洲精品久久久久中文字幕欢迎你| 久久久爽爽爽美女图片| 91亚洲永久免费精品| 欧美另类极品videosbestfree| 91精品视频网站| 国产美女直播视频一区| 欧美激情在线一区| 欧美激情一区二区三区久久久| 亚洲欧美国产视频| 日韩av电影国产| 久久亚洲精品国产亚洲老地址| 久久久精品日本| 在线日韩日本国产亚洲| 国产视频丨精品|在线观看| 久久影视电视剧凤归四时歌| 亚洲国产精久久久久久| 色哟哟网站入口亚洲精品| 97视频com| 国产一区二区三区在线看| 97人人爽人人喊人人模波多| 97久久精品视频| 欧美激情在线播放| 91人人爽人人爽人人精88v| 亚洲精品久久久久久下一站| 国产成人精品网站| 国产成人福利视频| 日韩在线精品视频| 欧美精品久久久久久久久| 欧美精品激情视频| 97超碰色婷婷| 97久久超碰福利国产精品…| 一区二区亚洲欧洲国产日韩| 亚洲欧美在线播放| 精品国产91久久久久久老师| 午夜精品三级视频福利| 欧美成人精品一区| 欧美日韩激情网| 久久伊人精品一区二区三区| 91夜夜揉人人捏人人添红杏| 韩国欧美亚洲国产| 久久久久久一区二区三区| 不用播放器成人网| 一区二区欧美久久| 亚洲区一区二区| 亚洲精品videossex少妇| 欧美激情综合亚洲一二区| 色综合久久精品亚洲国产| 91欧美激情另类亚洲| 成人黄色网免费| 亚洲精品美女久久| 国产99久久精品一区二区永久免费| 日韩av最新在线| 欧美国产亚洲视频| www.美女亚洲精品| 欧美xxxx综合视频| 国产精品久久久久aaaa九色| 久久久精品在线| 亚洲精品综合精品自拍| 黑人巨大精品欧美一区二区免费| 日韩av影院在线观看| 2019中文字幕免费视频| 亚洲视频第一页| 91日本在线观看| 欧美日韩一区二区免费视频| 日韩欧美大尺度| 日韩一区二区在线视频| 欧美在线性爱视频| 97在线看免费观看视频在线观看| 538国产精品一区二区免费视频| 蜜臀久久99精品久久久无需会员| 668精品在线视频| 亚洲美女久久久| 日韩大陆欧美高清视频区| 亲子乱一区二区三区电影| 国产玖玖精品视频| 91在线免费视频| 国产性色av一区二区| 国产精品专区第二| 高清欧美性猛交xxxx黑人猛交| 日本国产欧美一区二区三区| 国产精品久久久久久久久男| 中国日韩欧美久久久久久久久| 姬川优奈aav一区二区| 97视频在线观看视频免费视频| 日韩av在线免播放器| 久久综合免费视频影院| 91网站免费观看| 国产精品久久久久久亚洲调教| 热久久这里只有| 国产精品视频免费观看www| 国产亚洲激情在线| 亚洲欧美日韩一区二区三区在线| 亚洲在线www| 日日摸夜夜添一区| 国产精品美女无圣光视频| 久久精品国产亚洲精品| 国产一区二区三区在线视频| 992tv在线成人免费观看| 国产日韩欧美在线视频观看| 国产激情久久久久| 欧美午夜www高清视频| 欧美区在线播放| 91中文字幕在线| 97视频com| 精品高清一区二区三区| 成人写真视频福利网| 国产精品十八以下禁看| 亚洲最大成人在线| 亚洲一区二区自拍| 欧洲精品在线视频| 91久久精品国产91久久| 成人有码在线播放| 国产欧美精品日韩精品| 97色在线观看免费视频| 久久久精品影院| 91福利视频在线观看| 中文欧美在线视频| 欧美激情va永久在线播放| 国产精品天天狠天天看| 日韩精品免费在线观看| 久久久久久18| 午夜精品福利电影| 亚洲欧美一区二区精品久久久| 久久偷看各类女兵18女厕嘘嘘| 国产精品午夜一区二区欲梦| 亚洲精品视频播放| 日韩一区二区欧美| 精品国产乱码久久久久久天美| 欧美激情极品视频| 日韩的一区二区|