国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面試官:說說你對樹的理解?相關的操作有哪些?

開發 架構
在計算機領域,樹形數據結構是一類重要的非線性數據結構,可以表示數據之間一對多的關系。以樹與二叉樹最為常用,直觀看來,樹是以分支關系定義的層次結構。

[[425982]]

本文轉載自微信公眾號「JS每日一題」,作者灰灰。轉載本文請聯系JS每日一題公眾號。

一、是什么

在計算機領域,樹形數據結構是一類重要的非線性數據結構,可以表示數據之間一對多的關系。以樹與二叉樹最為常用,直觀看來,樹是以分支關系定義的層次結構

二叉樹滿足以下兩個條件:

  • 本身是有序樹
  • 樹中包含的各個節點的度不能超過 2,即只能是 0、1 或者 2

如下圖,左側的為二叉樹,而右側的因為頭結點的子結點超過2,因此不屬于二叉樹:

同時,二叉樹可以繼續進行分類,分成了滿二叉樹和完成二叉樹:

滿二叉樹:如果二叉樹中除了葉子結點,每個結點的度都為 2

完成二叉樹:如果二叉樹中除去最后一層節點為滿二叉樹,且最后一層的結點依次從左到右分布

二、操作

關于二叉樹的遍歷,常見的有:

  • 前序遍歷
  • 中序遍歷
  • 后序遍歷
  • 層序遍歷

前序遍歷

前序遍歷的實現思想是:

  • 訪問根節點
  • 訪問當前節點的左子樹
  • 若當前節點無左子樹,則訪問當前節點的右子

根據遍歷特性,遞歸版本用代碼表示則如下:

  1. const preOrder = (root) => { 
  2.   if(!root){ return } 
  3.   console.log(root) 
  4.   preOrder(root.left
  5.   preOrder(root.right

如果不使用遞歸版本,可以借助棧先進后出的特性實現,先將根節點壓入棧,再分別壓入右節點和左節點,直到棧中沒有元素,如下:

  1. const preOrder = (root) => { 
  2.   if(!root){ return } 
  3.   const stack = [root] 
  4.   while (stack.length) { 
  5.     const n = stack.pop() 
  6.     console.log(n.val) 
  7.     if (n.right) { 
  8.       stack.push(n.right
  9.     } 
  10.     if (n.left) { 
  11.       stack.push(n.left
  12.     } 
  13.   } 

中序遍歷

前序遍歷的實現思想是:

  • 訪問當前節點的左子樹
  • 訪問根節點
  • 訪問當前節點的右子

遞歸版本很好理解,用代碼表示則如下:

  1. const inOrder = (root) => { 
  2.   if (!root) { return } 
  3.   inOrder(root.left
  4.   console.log(root.val) 
  5.   inOrder(root.right

非遞歸版本也是借助棧先進后出的特性,可以一直首先一直壓入節點的左元素,當左節點沒有后,才開始進行出棧操作,壓入右節點,然后有依次壓入左節點,如下:

  1. const inOrder = (root) => { 
  2.   if (!root) { return } 
  3.   const stack = [root] 
  4.   let p = root 
  5.   while(stack.length || p){ 
  6.     while (p) { 
  7.       stack.push(p) 
  8.       p = p.left 
  9.     } 
  10.     const n = stack.pop() 
  11.     console.log(n.val) 
  12.     p = n.right 
  13.   } 

后序遍歷

前序遍歷的實現思想是:

  • 訪問當前節點的左子樹
  • 訪問當前節點的右子
  • 訪問根節點

遞歸版本,用代碼表示則如下:

  1. const postOrder = (root) => { 
  2.   if (!root) { return } 
  3.   postOrder(root.left
  4.   postOrder(root.right
  5.   console.log(n.val) 
  6.  } 

后序遍歷非遞歸版本實際跟全序遍歷是逆序關系,可以再多創建一個棧用來進行輸出,如下:

  1. const preOrder = (root) => { 
  2.   if(!root){ return } 
  3.   const stack = [root] 
  4.   const outPut = [] 
  5.   while (stack.length) { 
  6.     const n = stack.pop() 
  7.     outPut.push(n.val) 
  8.     if (n.right) { 
  9.       stack.push(n.right
  10.     } 
  11.     if (n.left) { 
  12.       stack.push(n.left
  13.     } 
  14.   } 
  15.   while (outPut.length) { 
  16.     const n = outPut.pop() 
  17.     console.log(n.val) 
  18.   } 

層序遍歷

按照二叉樹中的層次從左到右依次遍歷每層中的結點

借助隊列先進先出的特性,從樹的根結點開始,依次將其左孩子和右孩子入隊。而后每次隊列中一個結點出隊,都將其左孩子和右孩子入隊,直到樹中所有結點都出隊,出隊結點的先后順序就是層次遍歷的最終結果

用代碼表示則如下:

  1. const levelOrder = (root) => { 
  2.     if (!root) { return [] } 
  3.     const queue = [[root, 0]] 
  4.     const res = [] 
  5.     while (queue.length) { 
  6.         const n = queue.shift() 
  7.         const [node, leval] = n 
  8.         if (!res[leval]) { 
  9.             res[leval] = [node.val] 
  10.         } else { 
  11.             res[leval].push(node.val) 
  12.         } 
  13.         if (node.left) { queue.push([node.left, leval + 1]) } 
  14.         if (node.right) { queue.push([node.right, leval + 1]) } 
  15.     } 
  16.     return res 
  17. }; 

三、總結

樹是一個非常重要的非線性結構,其中二叉樹以二叉樹最常見,二叉樹的遍歷方式可以分成前序遍歷、中序遍歷、后序遍歷

同時,二叉樹又分成了完成二叉樹和滿二叉樹

參考文獻

https://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%A0%91

 

http://data.biancheng.net/view/27.html

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

2021-09-26 10:57:16

集合操作場景

2021-08-20 08:33:19

操作系統OS

2021-08-09 07:47:40

Git面試版本

2021-11-25 10:18:42

RESTfulJava互聯網

2020-12-01 08:47:36

Java異常開發

2020-06-12 15:50:56

options前端服務器

2021-09-09 07:21:26

TypeScript 高級類型

2021-09-16 07:52:18

算法應用場景

2019-05-10 10:50:04

Spring AOPJDK動態代理CGLIB動態代理

2021-11-02 22:04:58

模式

2022-02-21 17:24:18

序列化對象存儲

2021-11-03 14:10:28

工廠模式場景

2021-08-16 08:33:26

git

2021-11-10 07:47:49

組合模式場景

2021-11-09 08:51:13

模式命令面試

2021-11-05 07:47:56

代理模式對象

2020-12-04 06:27:04

序列化面試官Java

2024-07-26 08:10:10

2021-08-11 08:53:23

Git命令面試

2025-01-13 09:24:32

點贊
收藏

51CTO技術棧公眾號

午夜精品久久久久久久| 99久精品国产| 色综合五月天| 在线中文字幕不卡| 水莓100在线视频| 欧美日韩一二三区| 领导边摸边吃奶边做爽在线观看 | 男女裸体影院高潮| 久久午夜视频| 欧美日韩一区二区三区电影| 国产午夜精品久久久久久久| 国产免费又粗又猛又爽| 一区二区三区在线高清| 伊人222成人综合网| 亚洲护士老师的毛茸茸最新章节| а√在线中文在线新版| 日本中文字幕久久看| 欧美先锋资源| 日韩高清av| 久久日一线二线三线suv| 亚洲国产精华液| 欧美精品第1页| 在线看欧美视频| 97人人澡人人爽| 在线欧美福利| 欧美美女黄色网| 男人天堂1024| 色哟哟一区二区三区| 91网页在线观看| 色噜噜一区二区| 麻豆tv在线| 色一情一乱一伦一区二区三区丨| 激情五月综合婷婷| 亚洲激情在线观看| 国产一区二区三区91| 久久精品一偷一偷国产| 亚洲网色网站| 91色中文字幕| 国产一区二区在线影院| 蜜乳av一区二区三区| 欧美天天综合| 欧美精品久久一区二区| 欧美全黄视频| 欧美日韩国产精品一区二区| 欧美色综合网| 久久精品免视看| 欧美日韩精品一区二区天天拍小说| 亚洲激情国产| 日本一区视频在线观看免费| 美日韩一级片在线观看| 老司机午夜在线| 成人黄视频在线观看| 99蜜桃在线观看免费视频网站| 97精品视频在线观看自产线路二| 成年人免费在线播放| 精品欧美乱码久久久久久1区2区| 精品视频一区二区三区在线观看| 久久99999| 91精品国产91久久久久久最新| 亚洲精品一区二区三区影院| 国产成人高清| 538任你躁在线精品免费| 亚洲第一偷拍网| 久久福利影院| 美女91在线| 精品乱子伦一区二区三区| 欧美性一二三区| 香蕉亚洲视频| 香蕉久久一区| 欧美性猛交久久久乱大交小说 | 日本高清视频一区二区三区 | 庆余年2免费日韩剧观看大牛| 午夜久久久久久电影| 成人台湾亚洲精品一区二区| 日韩欧美亚洲日产国| 91精品国产综合久久国产大片| av电影在线观看| 99热这里只有精品7| 亚洲视频在线免费观看| 精品久久久久99| 国产激情91久久精品导航 | 日韩深夜福利网站| 国产精品一区二区久久久久| 成人午夜看片网址| 伊伊综合在线| 红桃av在线播放| 亚洲精品免费av| 97人人在线| 日本不卡一区| 国产精品对白一区二区三区| 国产精品久久久久免费a∨大胸| 色www精品视频在线观看| 婷婷综合网站| 久久99成人| 川上优的av在线一区二区| 成人软件网18免费视频| 欧美亚洲一区在线| 中文字幕一区二区5566日韩| 日本特黄久久久高潮| 人人超碰91尤物精品国产| 91av精品| 日韩精品网站| 欧美另类女人| 欧美日韩成人影院| 中文.日本.精品| 欧美极品少妇videossex| 韩国无码av片在线观看网站| 亚洲激情电影中文字幕| 国产成人午夜精品5599| 999精品视频在线观看| 日本欧美在线视频免费观看| 东北一级毛片| 日韩免费在线播放| 成人片在线免费看| 亚洲午夜激情免费视频| 色噜噜狠狠色综合网图区| 在线免费观看视频一区| 秋霞午夜在线观看| 超级碰碰视频| 欧美中文字幕第一页| 欧美一区二区三区白人| 久久超级碰视频| 第一区第二区在线| 中文在线а√在线| 国产男女免费视频| 国产福利久久精品| 欧美日韩激情视频8区| 国产精品一区二区91| 日韩视频在线一区二区三区 | 夜夜春成人影院| 密臀av一区二区三区| 国产精品区一区| 久久人人爽人人| 欧洲一区二区三区在线| 欧美一区二区三| 久久久久久久久久久久久久久久久久 | 久久久精品网| 久久99在线观看| 精品制服美女丁香| 在线观看www91| 92国产精品久久久久首页 | 久久久影视精品| 国产成人久久久| 高清视频在线观看一区| 日韩免费电影一区二区| 国产精品9999久久久久仙踪林| 91国产在线播放| 你懂的在线视频| 视频国产一区| 国产视频亚洲| 97av视频在线观看| 亚洲小说区图片区情欲小说| porn视频在线观看| 女同视频在线观看| 欧美人成在线| 国产一区二区免费视频| 欧美日韩一二三四五区| 91日韩久久| 亚洲77777| av中文字幕在线观看| 91桃色在线| 国产成人av毛片| 久久国产欧美日韩精品| 中文字幕五月欧美| 日本韩国一区二区三区| 久久99亚洲热视| 中文字幕日韩在线视频| 国产精品一香蕉国产线看观看| 影音先锋欧美在线| 免费在线观看一级毛片| 91成人福利社区| 国产麻豆精品视频| 日韩欧美国产麻豆| 99久久国产免费免费| 99999精品视频| 九九在线高清精品视频| 国产精品一区亚洲| 亚洲第一福利一区| 亚洲xxxxx性| 92精品国产成人观看免费| 91极品视频在线| 国产对白在线正在播放| 亚洲a中文字幕| 欧美日韩亚洲一区二区三区四区| 青柠在线影院观看日本| 丁香久久综合| 国产一区二区电影| 欧美一三区三区四区免费在线看| 97色在线视频| 欧美一级免费播放| 免费电影日韩网站| 欧美国产精品中文字幕| 国产精品视频免费在线观看| 一区一区视频| aaaa欧美| 久久久久久久免费视频了| 992tv成人免费视频| 日本成人看片网址| 久久天堂av| 99麻豆久久久国产精品免费 |