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

如何用 JS 實現(xiàn)二叉堆

開發(fā) 前端
二叉樹(Binary Tree)是一種樹形結構,它的特點是每個節(jié)點最多只有兩個分支節(jié)點,一棵二叉樹通常由根節(jié)點、分支節(jié)點、葉子節(jié)點組成,如下圖所示。每個分支節(jié)點也常常被稱作為一棵子樹,而二叉堆是一種特殊的樹,它屬于完全二叉樹。

[[384564]]

前言

二叉樹(Binary Tree)是一種樹形結構,它的特點是每個節(jié)點最多只有兩個分支節(jié)點,一棵二叉樹通常由根節(jié)點、分支節(jié)點、葉子節(jié)點組成,如下圖所示。每個分支節(jié)點也常常被稱作為一棵子樹,而二叉堆是一種特殊的樹,它屬于完全二叉樹。

二叉樹與二叉堆的關系

在日常工作中會遇到很多數(shù)組的操作,比如排序等。那么理解二叉堆的實現(xiàn)對以后的開發(fā)效率會有所提升,下面就簡單介紹一下什么是二叉樹,什么是二叉堆。

二叉樹特征

  • 根節(jié)點:二叉樹最頂層的節(jié)點
  • 分支節(jié)點:除了根節(jié)點以外且擁有葉子節(jié)點
  • 葉子節(jié)點:除了自身,沒有其他子節(jié)點

在二叉樹中,我們常常還會用父節(jié)點和子節(jié)點來描述,比如上圖中左側節(jié)點 2 為 6 和 3 的父節(jié)點,反之 6 和 3 是 2 子節(jié)點。

二叉樹分類

二叉樹分為滿二叉樹(full binary tree)和完全二叉樹(complete binary tree)。

  • 滿二叉樹:一棵深度為 k 且有 2 ^ k - 1個節(jié)點的二叉樹稱為滿二叉樹
  • 完全二叉樹:完全二叉樹是指最后一層左邊是滿的,右邊可能滿也可能不滿,然后其余層都是滿的二叉樹稱為完全二叉樹(滿二叉樹也是一種完全二叉樹)

二叉樹結構

從圖中我們可以看出二叉樹是從上到下依次排列下來,可想而知可以用一個數(shù)組來表示二叉樹的結構,從下標 index( 0 - 8 ) 從上到下依次排列。

 

  • 二叉樹左側節(jié)點表達式 index * 2 + 1。例如:以根節(jié)點為例求左側節(jié)點,根節(jié)點的下標為0,則左側節(jié)點的序數(shù)是1 ,對應數(shù)組中的值為1
  • 二叉樹右側節(jié)點表達式 index * 2 + 2。例如:以根節(jié)點為例求右側節(jié)點,根節(jié)點的下標為0,則右側節(jié)點的序數(shù)是2 ,對應數(shù)組中的值為 8
  • 二叉樹葉子節(jié)點表達式 序數(shù) >= floor( N / 2 )都是葉子節(jié)點(N是數(shù)組的長度)。例如:floor( 9 / 2 ) = 4 ,則從下標 4 開始的值都為葉子節(jié)點

二叉堆特征

二叉堆是一個完全二叉樹,父節(jié)點與子節(jié)點要保持固定的序關系,并且每個節(jié)點的左子樹和右子樹都是一個二叉堆。

從上圖可以看出

  • 圖一:每個父節(jié)點大于子節(jié)點或等于子節(jié)點,滿足二叉堆的性質
  • 圖二:其中有一個父節(jié)點小于子節(jié)點則不滿足二叉堆性質

二叉堆分類

​ 二叉堆根據(jù)排序不同,可以分為最大堆和最小堆

  • 最大堆:根節(jié)點的鍵值是所有堆節(jié)點鍵值中最大者,且每個父節(jié)點的值都比子節(jié)點的值大
  • 最小堆:根節(jié)點的鍵值是所有堆節(jié)點鍵值中最小者,且每個父節(jié)點的值都比子節(jié)點的值小

如何實現(xiàn)二叉堆

通過上面的講述想必大家對二叉堆有了一定的理解,那么接下來就是如何實現(xiàn)。以最大堆為例,首先要初始化數(shù)組然后通過交換位置形成最大堆。

初始化二叉堆

從上面描述,我們可以知道二叉堆其實就是一個數(shù)組,那么初始化就非常簡單了。

 

  1. class Heap{ 
  2.   constructor(arr){ 
  3.     this.data = [...arr]; 
  4.     this.size = this.data.length; 
  5.   } 

父子節(jié)點交換位置

圖一中 2 作為父節(jié)點小于子節(jié)點,很顯然不符合最大堆性質。maxHeapify 函數(shù)可以把每個不符合最大堆性質的節(jié)點調換位置,從而滿足最大堆性質的數(shù)組。

調整步驟:

  • 調整分支節(jié)點 2 的位置(不滿足最大堆性質)
  • 獲取父節(jié)點 2 的左右節(jié)點 ( 12 , 5 ) ,從 ( 2 , 15 , 5 ) 中進行比較
  • 找出最大的節(jié)點與父節(jié)點進行交換,如果該節(jié)點本身為最大節(jié)點則停止操作
  • 重復 step2 的操作,從 2 , 4 , 7 中找出最大值與 2 做交換(遞歸)

 

  1. maxHeapify(i) { 
  2.   let max = i; 
  3.  
  4.   if(i >= this.size){ 
  5.     return
  6.   } 
  7.   // 當前序號的左節(jié)點 
  8.   const l = i * 2 + 1; 
  9.   // 當前需要的右節(jié)點 
  10.   const r = i * 2 + 2; 
  11.  
  12.   // 求當前節(jié)點與其左右節(jié)點三者中的最大值 
  13.   if(l < this.size && this.data[l] > this.data[max]){ 
  14.     max = l; 
  15.   } 
  16.   if(r < this.size && this.data[r] > this.data[max]){ 
  17.     max = r; 
  18.   } 
  19.  
  20.   // 最終max節(jié)點是其本身,則已經(jīng)滿足最大堆性質,停止操作 
  21.   if(max === i) { 
  22.     return
  23.   } 
  24.  
  25.   // 父節(jié)點與最大值節(jié)點做交換 
  26.   const t = this.data[i]; 
  27.   this.data[i] = this.data[max]; 
  28.   this.data[max] = t; 
  29.  
  30.   // 遞歸向下繼續(xù)執(zhí)行 
  31.   return this.maxHeapify(max); 

形成最大堆

我們可以看到,初始化是由一個數(shù)組組成,以下圖為例很顯然并不會滿足最大堆的性質,上述 maxHeapify 函數(shù)只是對某一個節(jié)點作出對調,無法對整個數(shù)組進行重構,所以我們要依次對數(shù)組進行遞歸重構。

  • 找到所有分支節(jié)點 Math.floor( N / 2 )(不包括葉子節(jié)點)
  • 將找到的子節(jié)點進行 maxHeapify 操作

 

  1. rebuildHeap(){ 
  2.   // 葉子節(jié)點 
  3.   const L = Math.floor(this.size / 2); 
  4.   for(let i = L - 1; i >= 0; i--){ 
  5.     this.maxHeapify(i); 
  6.   } 

生成一個升序的數(shù)組

  • swap 函數(shù)交換首位位置
  • 將最后一個從堆中拿出相當于 size - 1
  • 執(zhí)行 maxHeapify 函數(shù)進行根節(jié)點比較找出最大值進行交換
  • 最終 data 會變成一個升序的數(shù)組

 

  1. sort() { 
  2.   for(let i = this.size - 1; i > 0; i--){ 
  3.     swap(this.data, 0, i); 
  4.     this.size--; 
  5.     this.maxHeapify(0); 
  6.   } 

插入方法

Insert 函數(shù)作為插入節(jié)點函數(shù),首先

  1. 往 data 結尾插入節(jié)點
  2. 因為節(jié)點追加,size + 1
  3. 因為一個父節(jié)點擁有 2 個子節(jié)點,我們可以根據(jù)這個性質通過 isHeap 函數(shù)獲取第一個葉子節(jié)點,可以通過第一個葉子節(jié)點獲取新插入的節(jié)點,然后進行 3 個值的對比,找出最大值,判斷插入的節(jié)點。如果跟父節(jié)點相同則不進行重構(相等滿足二叉堆性質),否則進行 rebuildHeap 重構堆

 

  1. isHeap() { 
  2.   const L = Math.floor(this.size / 2); 
  3.   for (let i = L - 1; i >= 0; i--) { 
  4.     const l = this.data[left(i)] || Number.MIN_SAFE_INTEGER; 
  5.     const r = this.data[right(i)] || Number.MIN_SAFE_INTEGER; 
  6.  
  7.     const max = Math.max(this.data[i], l, r); 
  8.  
  9.     if (max !== this.data[i]) { 
  10.       return false
  11.     } 
  12.     return true
  13.   } 
  14. insert(key) { 
  15.   this.data[this.size] = key
  16.   this.size++ 
  17.   if (this.isHeap()) { 
  18.     return
  19.   } 
  20.   this.rebuildHeap(); 

刪除方法

delete 函數(shù)作為刪除節(jié)點,首先

  • 刪除傳入index的節(jié)點
  • 因為節(jié)點刪除,size - 1
  • 重復上面插入節(jié)點的操作

 

  1. delete(index) { 
  2.   if (index >= this.size) { 
  3.     return
  4.   } 
  5.   this.data.splice(index, 1); 
  6.   this.size--; 
  7.   if (this.isHeap()) { 
  8.     return
  9.   } 
  10.   this.rebuildHeap(); 

完整代碼

 

  1. /** 
  2.  * 最大堆 
  3.  */ 
  4.  
  5. function left(i) { 
  6.   return (i * 2) + 1; 
  7.  
  8. function right(i) { 
  9.   return (i * 2) + 2; 
  10.  
  11. function swap(A, i, j) { 
  12.   const t = A[i]; 
  13.   A[i] = A[j]; 
  14.   A[j] = t; 
  15.  
  16. class Heap { 
  17.   constructor(arr) { 
  18.     this.data = [...arr]; 
  19.     this.size = this.data.length; 
  20.     this.rebuildHeap = this.rebuildHeap.bind(this); 
  21.     this.isHeap = this.isHeap.bind(this); 
  22.     this.sort = this.sort.bind(this); 
  23.     this.insert = this.insert.bind(this); 
  24.     this.delete = this.delete.bind(this); 
  25.     this.maxHeapify = this.maxHeapify.bind(this); 
  26.   } 
  27.  
  28.   /** 
  29.    * 重構堆,形成最大堆 
  30.    */ 
  31.   rebuildHeap() { 
  32.     const L = Math.floor(this.size / 2); 
  33.     for (let i = L - 1; i >= 0; i--) { 
  34.       this.maxHeapify(i); 
  35.     } 
  36.   } 
  37.  
  38.   isHeap() { 
  39.     const L = Math.floor(this.size / 2); 
  40.     for (let i = L - 1; i >= 0; i--) { 
  41.       const l = this.data[left(i)] || Number.MIN_SAFE_INTEGER; 
  42.       const r = this.data[right(i)] || Number.MIN_SAFE_INTEGER; 
  43.  
  44.       const max = Math.max(this.data[i], l, r); 
  45.  
  46.       if (max !== this.data[i]) { 
  47.         return false
  48.       } 
  49.       return true
  50.     } 
  51.   } 
  52.  
  53.   sort() { 
  54.     for (let i = this.size - 1; i > 0; i--) { 
  55.       swap(this.data, 0, i); 
  56.       this.size--; 
  57.       this.maxHeapify(0); 
  58.     } 
  59.   } 
  60.  
  61.   insert(key) { 
  62.     this.data[this.size++] = key
  63.     if (this.isHeap()) { 
  64.       return
  65.     } 
  66.     this.rebuildHeap(); 
  67.   } 
  68.  
  69.   delete(index) { 
  70.     if (index >= this.size) { 
  71.       return
  72.     } 
  73.     this.data.splice(index, 1); 
  74.     this.size--; 
  75.     if (this.isHeap()) { 
  76.       return
  77.     } 
  78.     this.rebuildHeap(); 
  79.   } 
  80.  
  81.   /** 
  82.    * 交換父子節(jié)點位置,符合最大堆特征 
  83.    * @param {*} i 
  84.    */ 
  85.   maxHeapify(i) { 
  86.     let max = i; 
  87.  
  88.     if (i >= this.size) { 
  89.       return
  90.     } 
  91.  
  92.     // 求左右節(jié)點中較大的序號 
  93.     const l = left(i); 
  94.     const r = right(i); 
  95.     if (l < this.size && this.data[l] > this.data[max]) { 
  96.       max = l; 
  97.     } 
  98.  
  99.     if (r < this.size && this.data[r] > this.data[max]) { 
  100.       max = r; 
  101.     } 
  102.  
  103.     // 如果當前節(jié)點最大,已經(jīng)是最大堆 
  104.     if (max === i) { 
  105.       return
  106.     } 
  107.  
  108.     swap(this.data, i, max); 
  109.  
  110.     // 遞歸向下繼續(xù)執(zhí)行 
  111.     return this.maxHeapify(max); 
  112.   } 
  113.  
  114. module.exports = Heap; 

示例

相信通過上面的講述大家對最大堆的實現(xiàn)已經(jīng)有了一定的理解,我們可以利用這個來進行排序。

 

  1. const arr = [15, 12, 8, 2, 5, 2, 3, 4, 7]; 
  2. const fun = new Heap(arr); 
  3. fun.rebuildHeap(); // 形成最大堆的結構 
  4. fun.sort();// 通過排序,生成一個升序的數(shù)組 
  5. console.log(fun.data) // [2, 2, 3, 4, 5, 7, 8, 12, 15] 

總結

文章中主要講述了二叉樹、二叉堆的概念,然后通過代碼實現(xiàn)二叉堆。我們可以通過二叉堆來做排序和優(yōu)先級隊列等。

責任編輯:未麗燕 來源: ZooTeam Blog
相關推薦

2020-11-23 08:53:34

堆Heap

2020-08-31 07:43:58

二叉堆大頂堆存儲

2021-05-06 05:29:32

二叉堆數(shù)據(jù)結構算法

2023-04-06 07:39:48

2020-10-11 16:56:48

二叉搜索樹代碼開發(fā)

2021-04-20 08:37:14

數(shù)據(jù)結構二叉樹

2020-04-27 07:05:58

二叉樹左子樹右子樹

2023-07-31 08:01:13

二叉搜索測試

2021-09-03 08:58:00

二叉搜索樹節(jié)點

2020-12-22 08:56:51

JavaScript數(shù)據(jù)結構前端

2009-08-11 13:29:57

C#二叉樹遍歷

2022-10-12 23:25:17

二叉樹父節(jié)點根節(jié)點

2020-12-11 09:49:29

二叉樹搜索樹數(shù)據(jù)

2009-05-27 09:38:32

C#二叉樹

2024-01-23 12:54:00

C++編程語言代碼

2021-04-19 07:47:42

數(shù)據(jù)結構二叉樹Tree

2021-05-09 20:22:41

順序查找二叉查找數(shù)據(jù)結構

2021-03-17 08:19:22

二叉樹LeetCode

2013-07-15 16:35:55

二叉樹迭代器

2021-09-29 10:19:00

算法平衡二叉樹
點贊
收藏

51CTO技術棧公眾號

亚洲精品国产综合区久久久久久久| 伊人久久久大香线蕉综合直播| 国产色产综合色产在线视频| 欧美一区深夜视频| 无码成人精品区在线观看| 91在线超碰| 久久在线观看免费| 日韩美女在线看| 国产一区二区三区精品在线| 激情久久一区二区| 亚洲精品成人少妇| 久久久久久久久一区| 五月激情丁香网| 综合久久十次| 亚洲精品电影网| 簧片在线免费看| av网站网址在线观看| 成人丝袜视频网| 国产成人精品免费久久久久 | 国产成人高清激情视频在线观看 | 男的操女的网站| 日韩精品一区二区三区中文字幕| 欧美国产精品劲爆| 99re在线播放| 无码任你躁久久久久久久| 久久在线免费| 亚洲成人在线网| 精品少妇无遮挡毛片| 天堂亚洲精品| 国产日韩欧美制服另类| 91久久久久久久久久| 日韩av在线电影| 欧美国产小视频| 亚洲精品www久久久久久广东| 日韩国产伦理| 色wwwwww| 免费日韩视频| 欧美噜噜久久久xxx| 国产成人无码精品久久二区三| 精品极品在线| 亚洲欧美激情小说另类| 麻豆久久久9性大片| 99久久精品国产成人一区二区 | 一区二区不卡在线视频 午夜欧美不卡' | 成年人av电影| 精品一区二区三区在线 | japansex久久高清精品| 欧美日韩中文字幕综合视频| 三级在线免费观看| 成人资源www网在线最新版| 大胆亚洲人体视频| 成人亲热视频网站| www.久久网| 美女诱惑一区| 国内精品一区二区三区| 欧美日韩精品一区二区三区视频播放 | 后进极品白嫩翘臀在线视频| 亚洲综合不卡| 久久理论片午夜琪琪电影网| 黄色a级片在线观看| 日韩专区精品| 精品亚洲国产视频| 国产 中文 字幕 日韩 在线| 日本免费精品| 日韩美女一区二区三区| 下面一进一出好爽视频| 日韩综合久久| 在线不卡一区二区| 911av视频| 欧美中文高清| 日韩精品资源二区在线| 自拍偷拍激情视频| caoporn成人免费视频在线| 欧美一区二区人人喊爽| 色偷偷中文字幕| 欧美经典一区| 精品国精品国产尤物美女| 国产精品欧美性爱| 欧美第一在线视频| 欧美精品一区二区三区在线| 国产女主播在线播放| 免费看成人人体视频| 精品无码久久久久久国产| b站大片免费直播| 欧美色女视频| 久久久国产一区| 国产精品视频看看| 自拍日韩欧美| 97av在线视频| 五月激情丁香网| 国产一区欧美日韩| wwwxx欧美| 完全免费av在线播放| 暗呦丨小u女国产精品| 中文字幕免费一区二区| 欧美肥老妇视频| 欧美三级一区二区三区| 国产欧美日韩一区二区三区在线| www.日韩视频| 九九热视频精品| 99精品国产在热久久| 日本电影亚洲天堂| 97成人在线观看| 成人午夜免费av| 欧美日韩免费精品| а√天堂官网中文在线| 欧美日韩国产在线看| 五月婷婷狠狠操| 日韩成人18| 亚洲欧美日韩国产中文专区| 精品亚洲乱码一区二区| 国内精品嫩模av私拍在线观看| 日韩在线www| 免费在线一级片| 日韩精品欧美成人高清一区二区| 欧美在线视频观看免费网站| 亚洲性生活大片| av在线不卡免费看| 一区二区在线不卡| 黑人巨大亚洲一区二区久 | 国产a精品视频| 日本电影一区二区三区| 麻豆视频在线| 色呦呦日韩精品| 日本女人性视频| 欧美日韩伦理在线免费| 久久免费视频这里只有精品| 亚洲精品一区二三区| 国产精品一区二区在线观看不卡| 国产精品美乳在线观看| 理论片中文字幕| 中文字幕精品三区| 欧美爱爱视频免费看| 9999在线精品视频| 国产一区二区日韩| 久久精品性爱视频| 国产米奇在线777精品观看| 欧美日韩三区四区| sese综合| 精品欧美一区二区在线观看| 国产破处视频在线观看| 午夜亚洲福利在线老司机| 国产精品乱码| 2024最新电影在线免费观看| 欧美性色欧美a在线播放| 欧美深性狂猛ⅹxxx深喉| 欧美在线1区| 成人久久一区二区三区| www在线播放| 午夜久久电影网| 亚洲黄色小说在线观看| 亚洲女同中文字幕| 成人在线免费观看视视频| 国产www.大片在线| 91精品办公室少妇高潮对白| 成人无码www在线看免费| 91精品1区| 国产精品香蕉国产| www在线播放| 欧美日韩黄色一区二区| 亚洲无人区码一码二码三码的含义| 久久中文亚洲字幕| 国产精品久久久久高潮| 精品电影在线| 在线精品亚洲一区二区不卡| 91精品人妻一区二区三区| 久久视频一区| 日本精品一区二区三区不卡无字幕| 秋霞成人影院| 欧美午夜宅男影院| www.日本高清视频| 久久99久久久欧美国产| 中文字幕一区二区三区最新| 91成人app| 久久99国产综合精品女同| 亚洲a视频在线观看| 亚洲国产成人va在线观看天堂| 欧美精品aaaa| 免费一区二区| 国产成人久久精品| 日本视频在线免费观看| 91麻豆精品国产91久久久资源速度| 日本japanese极品少妇| 久久夜色精品| 亚洲国产一区在线| 国产精品美女久久久久人| 欧美激情二区三区| 无码h黄肉3d动漫在线观看| 精品国产户外野外| 中文字幕av观看| 日韩不卡在线观看日韩不卡视频| 国产精品视频入口| 草草视频在线| 国产亚洲美女精品久久久| 97人妻精品一区二区三区视频| 国产亚洲一区二区三区| 精品久久久久久中文字幕2017| 欧美黑白配在线| 国产成人精品一区二区三区| 无遮挡的视频在线观看| 欧美成人精品二区三区99精品| 精品国产大片大片大片| 粉嫩aⅴ一区二区三区四区| 久久久久久久激情| 68国产成人综合久久精品| 国产一区二区视频在线免费观看 | 欧美成年人视频网站| 日批免费在线观看| 欧美高清激情brazzers| 日本三级网站在线观看| 欧美激情一区二区三区不卡| 中文字幕欧美视频| 天堂午夜影视日韩欧美一区二区| 精品视频一区二区| 美女视频一区| 97视频在线观看视频免费视频| 亚洲成人一二三区| 91久久精品一区二区三| 国产精品 欧美 日韩| 中文字幕成人在线观看| 亚洲av成人片无码| 奇米一区二区三区| 成人中文字幕在线播放| 国产电影一区二区在线观看| 精品网站在线看| 欧美日韩在线精品一区二区三区激情综合 | 日韩福利一区二区| 在线播放国产精品二区一二区四区 | 欧美乱人伦中文字幕在线| 幼a在线观看| 亚洲欧美日韩国产精品| 日韩精品福利| 亚洲美女喷白浆| 亚洲av片一区二区三区| 亚洲第一偷拍网| 乱精品一区字幕二区| 日韩欧美一卡二卡| 99久久婷婷国产一区二区三区| 精品日本高清在线播放| 日本熟妇一区二区| 亚洲成人免费影院| 日韩 国产 在线| 精品欧美国产一区二区三区| 精品无码久久久久久久久| 亚洲综合另类小说| 国产无码精品一区二区| 亚洲国产毛片aaaaa无费看| 国产在线免费视频| 午夜精品一区二区三区免费视频| 欧洲性xxxx| 国产精品久久久久久久久搜平片| 少妇精品无码一区二区| 福利一区福利二区| 免费看黄色片的网站| proumb性欧美在线观看| 国产精品无码在线| 26uuu色噜噜精品一区二区| 一本加勒比北条麻妃| 国产欧美一区二区精品忘忧草| 好吊操视频这里只有精品| 成人做爰69片免费看网站| 日本69式三人交| 久久久久亚洲蜜桃| 成年人免费视频播放| 自拍偷拍亚洲综合| 久久这里只有精品免费| 一片黄亚洲嫩模| 国产成人无码精品久久久久| 欧美日韩一区二区在线| 日本三级一区二区三区| 制服丝袜一区二区三区| 国产成人三级在线观看视频| 日韩精品在线观看一区| 国产www.大片在线| 欧美日韩第一页| 91久久国产综合久久91猫猫| 国产精品私拍pans大尺度在线| 中文字幕在线视频久| 国产精品丝袜视频| 成人偷拍自拍| 亚洲高清不卡一区| 国产综合久久| 亚洲激情在线观看视频| 大白屁股一区二区视频| 懂色av蜜桃av| 亚洲精品视频免费看| 久久亚洲精品国产| 欧美久久一区二区| 亚洲人成色777777精品音频| 日韩性生活视频| 国产va在线视频| 成人精品网站在线观看| 亚洲成aⅴ人片久久青草影院| 精品蜜桃一区二区三区| 欧美三级伦理在线| 九一国产精品视频| 久久精品国产**网站演员| 欧美xxxx×黑人性爽| 中文字幕一区二区视频| 成人精品免费在线观看| 3atv在线一区二区三区| 九色在线观看| 久久久久久久一区二区三区| 欧美综合影院| 欧美xxxx黑人又粗又长密月| 亚洲一本二本| 在线观看高清免费视频| 97久久人人超碰| 欧美日韩一级大片| 欧美日韩视频第一区| 三级av在线| 韩国国内大量揄拍精品视频| 伊人久久大香| 西游记1978| 模特精品在线| 三级视频网站在线观看| 亚洲女同一区二区| 一区二区三区在线免费观看视频 | 视频在线不卡免费观看| 精品这里只有精品| 成人免费看黄yyy456| 51精品免费网站| 欧美日韩高清一区二区不卡| 国产视频福利在线| 69精品小视频| 综合激情久久| 成人在线观看毛片| 激情六月婷婷综合| 四虎影视一区二区| 欧美最猛性xxxxx直播| 能在线看的av| 欧美在线视频在线播放完整版免费观看| 国产伦精品一区二区三区视频金莲| 日本午夜人人精品| 日韩大胆成人| 亚洲人成无码网站久久99热国产| 水野朝阳av一区二区三区| 99re久久精品国产| 精品美女国产在线| 人妻偷人精品一区二区三区| 色综合天天综合网国产成人网 | 午夜成人免费电影| www久久久久久| 欧美丰满老妇厨房牲生活| 日本在线视频一区二区三区| 男人日女人的bb| 国产成人三级在线观看| 劲爆欧美第一页| 欧美精品一区二区精品网| 超碰在线中文字幕| 国产在线资源一区| 国产毛片一区| 免费网站在线高清观看| 欧美日韩国产天堂| www.在线视频| 国产99视频精品免费视频36| 亚洲福利免费| 美女爆乳18禁www久久久久久| 亚洲伦在线观看| 韩国av在线免费观看| 97国产精品视频人人做人人爱| 日韩免费大片| 老司机午夜网站| www.亚洲免费av| 国产午夜麻豆影院在线观看| 色悠悠国产精品| 日韩精品视频一区二区三区| 日韩精品一区二区免费| 26uuu久久综合| 一本色道久久综合亚洲| 久久成人综合视频| 欧美爱爱网站| 一区二区三区网址| 亚洲激情图片qvod| 欧洲天堂在线观看| 成人在线国产精品| 亚洲欧洲日本mm| 国产三级av在线播放| 4438成人网| 三妻四妾的电影电视剧在线观看| 波多野结衣久草一区| 亚洲精品1区2区| 人人妻人人澡人人爽| 欧美一区二区性放荡片| 欧美男人天堂| 欧美日韩一级在线| 91丨九色丨国产丨porny| 国产精品久久无码一三区| 亚洲18私人小影院| 91综合网人人| 亚洲国产欧美视频| 欧美精品1区2区3区| 亚洲美女久久精品| 高清无码一区二区在线观看吞精| 久久成人18免费观看| 亚洲精品视频在线观看免费视频| 亚洲精品一区二区在线观看| 中文.日本.精品| 欧美一区二区中文字幕| 中文字幕av不卡|