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

Treap——堆和二叉樹的完美結合,性價比極值的搜索樹

大數據 數據分析
Treap本質上也是一顆BST(平衡二叉搜索樹),和我們之前介紹的SBT是一樣的。但是Treap維持平衡的方法和SBT不太一樣,有些許區別,相比來說呢,Treap的原理還要再簡單一些,所以之前在競賽當中不允許使用STL的時候,我們通常都會手寫一棵Treap來代替。

[[357058]]

大家好,今天和大家聊一個新的數據結構,叫做Treap。

Treap本質上也是一顆BST(平衡二叉搜索樹),和我們之前介紹的SBT是一樣的。但是Treap維持平衡的方法和SBT不太一樣,有些許區別,相比來說呢,Treap的原理還要再簡單一些,所以之前在競賽當中不允許使用STL的時候,我們通常都會手寫一棵Treap來代替。

Treap的基本原理

既然是平衡二叉搜索樹,關鍵點就在于平衡,那么重點自然是如何維護樹的平衡。

在Treap當中,維護平衡非常簡單,只有一句話,就是通過維護小頂堆的形式來維持樹的平衡。Treap也正是因此得名,因為它是Tree和Heap的結合體。

我們來看下Treap當中節點的結構:

  1. class TreapNode(TreeNode): 
  2.     ""
  3.     TreeNode: The node class of treap tree. 
  4.     Paramters:  
  5.         key: The key of node, can be treated as the key of dictionary 
  6.         value: The value of node, can be treated as the value of dictionary 
  7.         priority: The priority of node, specially for treap structure, describe the priority of the node in the treap.  
  8.         lchild: The left child of node 
  9.         rchild: The right child of node 
  10.         father: The parent of node, incase that we need to remove or rotate the node in the treap, so we need father parameter to mark the address of the parent 
  11.     ""
  12.     def __init__(self, key=None, value=None, lchild=None, rchild=None, father=None, priority=None): 
  13.         super().__init__(key, value, lchild, rchild, father) 
  14.         self._priority = priority 
  15.  
  16.     @property 
  17.     def priority(self): 
  18.         return self._priority 
  19.  
  20.     @priority.setter 
  21.     def priority(self, priority): 
  22.         self._priority = priority 
  23.  
  24.     def __str__(self): 
  25.         return 'key={}, value={}'.format(self.key, self.value) 

這里的TreeNode是我抽象出來的樹結構通用的Node,當中包含key、value、lchild、rchild和father。TreapNode其實就是在此基礎上增加了一個priority屬性。

之所以要增加這個priority屬性是為了維護它堆的性質,通過維護這個堆的性質來保持樹的平衡。具體的操作方法,請往下看。

Treap的增刪改查

插入

首先來講Treap的插入元素的操作,其實插入元素的操作非常簡單,就是普通BST插入元素的操作。唯一的問題是如何維持樹的平衡。

我們前文說了,我們是通過維持堆的性質來保持平衡的,那么自然又會有一個新的問題。為什么維持堆的性質可以保證平衡呢?

答案很簡單,因為我們在插入的時候,需要對每一個插入的Node隨機附上一個priority。堆就是用來維護這個priority的,保證樹根一定擁有最小的priority。正是由于這個priority是隨機的,我們可以保證整棵樹蛻化成線性的概率降到無窮低。

當我們插入元素之后發現破壞了堆的性質,那么我們需要通過旋轉操作來維護。舉個簡單的例子,在下圖當中,如果B節點的priority比D要小,為了保證堆的性質,需要將B和D進行互換。由于直接互換會破壞BST的性質,所以我們采取旋轉的操作。

旋轉之后我們發現B和D互換了位置,并且旋轉之后的A和E的priority都是大于D的,所以旋轉之后我們整棵樹依然維持了性質。

右旋的情況也是一樣的,其實我們觀察一下會發現,要交換左孩子和父親需要右旋,如果是要交換右孩子和父親,則需要左旋。

整個插入的操作其實就是基礎的BST插入過程,加上旋轉的判斷。

  1. def _insert(self, node, father, new_node, left_or_right='left'): 
  2.       ""
  3.       Inside implement of insert node. 
  4.       Implement in recursion. 
  5.       Since the parameter passed in Python is reference, so when we add node, we need to assign the node to its father, otherwise the reference will lose outside the function
  6.       When we add node, we need to compare its key with its father's key to make sure it's the lchild or rchild of its father. 
  7.       ""
  8.       if node is None: 
  9.           if new_node.key < father.key
  10.               father.lchild = new_node 
  11.           else
  12.               father.rchild = new_node 
  13.           new_node.father = father 
  14.           return 
  15.       if new_node.key < node.key
  16.           self._insert(node.lchild, node, new_node, 'left'
  17.           # maintain 
  18.           if node.lchild.priority < node.priority: 
  19.               self.rotate_right(node, father, left_or_right) 
  20.       else
  21.           self._insert(node.rchild, node, new_node, 'right'
  22.           # maintain 
  23.           if node.rchild.priority < node.priority: 
  24.               self.rotate_left(node, father, left_or_right) 

前面的邏輯就是BST的插入,也就是和當前節點比大小,決定插入在左邊還是右邊。注意一下,這里我們在插入完成之后,增加了maintain的邏輯,其實也就是比較一下,剛剛進行的插入是否破壞了堆的性質。可能有些同學要問我了,這里為什么只maintain了一次?有可能插入的priority非常小,需要一直旋轉到樹根不是嗎?

的確如此,但是不要忘了,我們這里的maintain邏輯并非只調用一次。隨著整個遞歸的回溯,在樹上的每一層它其實都會執行一次maintain邏輯。所以是可以保證從插入的地方一直維護到樹根的。

查詢

查詢很簡單,不用多說,就是BST的查詢操作,沒有任何變化。

  1. def _query(self, node, key, backup=None): 
  2.        if node is None: 
  3.            return backup 
  4.        if key < node.key
  5.            return self._query(node.lchild, key, backup) 
  6.        elif key > node.key
  7.            return self._query(node.rchild, key, backup) 
  8.        return node 
  9.  
  10.    def query(self, key, backup=None): 
  11.        ""
  12.        Return the result of query a specific node, if not exists return None 
  13.        ""
  14.        return self._query(self.root, key, backup) 

刪除

刪除的操作稍微麻煩了一些,由于涉及到了優先級的維護,不過邏輯也不難理解,只需要牢記需要保證堆的性質即可。

首先,有兩種情況非常簡單,一種是要刪除的節點是葉子節點,這個都很容易想明白,刪除它不會影響任何其他節點,直接刪除即可。第二種情況是鏈節點,也就是說它只有一個孩子,那么刪除它也不會引起變化,只需要將它的孩子過繼給它的父親,整個堆和BST的性質也不會受到影響。

對于這兩種情況之外,我們就沒辦法直接刪除了,因為必然會影響堆的性質。這里有一個很巧妙的做法,就是可以先將要刪除的節點旋轉,將它旋轉成葉子節點或者是鏈節點,再進行刪除。

在這個過程當中,我們需要比較一下它兩個孩子的優先級,確保堆的性質不會受到破壞。

  1. def _delete_node(self, node, father, key, child='left'): 
  2.         ""
  3.         Implement function of delete node. 
  4.         Defined as a private function that only can be called inside. 
  5.         ""
  6.         if node is None: 
  7.             return 
  8.         if key < node.key
  9.             self._delete_node(node.lchild, node, key
  10.         elif key > node.key
  11.             self._delete_node(node.rchild, node, key'right'
  12.         else
  13.             # 如果是鏈節點,葉子節點的情況也包括了 
  14.             if node.lchild is None: 
  15.                 self.reset_child(father, node.rchild, child) 
  16.             elif node.rchild is None: 
  17.                 self.reset_child(father, node.lchild, child) 
  18.             else
  19.                 # 根據兩個孩子的priority決定是左旋還是右旋 
  20.                 if node.lchild.priority < node.rchild.priority: 
  21.                     node = self.rotate_right(node, father, child) 
  22.                     self._delete_node(node.rchild, node, key'right'
  23.                 else
  24.                     node = self.rotate_left(node, father, child) 
  25.                     self._delete_node(node.lchild, node, key
  26.  
  27.                      
  28.     def delete(self, key): 
  29.         ""
  30.         Interface of delete method face outside. 
  31.         ""
  32.         self._delete_node(self.root, None, key'left'

修改

修改的操作也非常簡單,我們直接查找到對應的節點,修改它的value即可。

旋轉

我們也貼一下旋轉操作的代碼,其實這里的邏輯和之前SBT當中介紹的旋轉操作是一樣的,代碼也基本相同:

  1. def reset_child(self, node, child, left_or_right='left'): 
  2.        ""
  3.        Reset the child of father, since in Python all the instances passed by reference, so we need to set the node as a child of its father node. 
  4.        ""
  5.        if node is None: 
  6.            self.root = child 
  7.            self.root.father = None 
  8.            return 
  9.        if left_or_right == 'left'
  10.            node.lchild = child 
  11.        else
  12.            node.rchild = child 
  13.        if child is not None: 
  14.            child.father = node 
  15.  
  16.  
  17. def rotate_left(self, node, father, left_or_right): 
  18.        ""
  19.        Left rotate operation of Treap. 
  20.        Example:  
  21.  
  22.                D 
  23.              /   \ 
  24.             A      B 
  25.                   / \ 
  26.                  E   C 
  27.  
  28.        After rotate: 
  29.  
  30.                B 
  31.               / \ 
  32.              D   C 
  33.             / \ 
  34.            A   E  
  35.        ""
  36.        rchild = node.rchild 
  37.        node.rchild = rchild.lchild 
  38.        if rchild.lchild is not None: 
  39.            rchild.lchild.father = node 
  40.        rchild.lchild = node 
  41.        node.father = rchild 
  42.        self.reset_child(father, rchild, left_or_right) 
  43.        return rchild 
  44.  
  45.    def rotate_right(self, node, father, left_or_right): 
  46.        ""
  47.        Right rotate operation of Treap. 
  48.        Example:  
  49.  
  50.                D 
  51.              /   \ 
  52.             A     B 
  53.            / \ 
  54.           E   C 
  55.  
  56.        After rotate: 
  57.  
  58.                A 
  59.               / \ 
  60.              E   D 
  61.                 / \ 
  62.                C   B  
  63.        ""
  64.        lchild = node.lchild 
  65.        node.lchild = lchild.rchild 
  66.        if lchild.rchild is not None: 
  67.            lchild.rchild.father = node 
  68.        lchild.rchild = node 
  69.        node.father = lchild 
  70.        self.reset_child(father, lchild, left_or_right) 
  71.        return lchild 

這里唯一要注意的是,由于Python當中存儲的都是引用,所以我們在旋轉操作之后必須要重新覆蓋一下父節點當中當中的值才會生效。負責我們修改了node的引用,但是father當中還是存儲的舊的地址,一樣沒有生效。

后記

基本上到這里整個Treap的原理就介紹完了,當然除了我們剛才介紹的基本操作之外,Treap還有一些其他的操作。比如可以split成兩個Treap,也可以由兩個Treap合并成一個。還可以查找第K大的元素,等等。這些額外的操作,我用得也不多,就不多介紹了,大家感興趣可以去了解一下。

Treap這個數據結構在實際當中幾乎沒有用到過,一般還是以競賽場景為主,我們學習它主要就是為了提升和鍛煉我們的數據結構能力以及代碼實現能力。Treap它的最大優點就是實現簡單,沒有太多復雜的操作,但是我們前面也說了,它是通過隨機的priority來控制樹的平衡的,那么它顯然無法做到完美平衡,只能做到不落入最壞的情況,但是無法保證可以進入最好的情況。不過對于二叉樹來說,樹深的一點差距相差并不大。所以Treap的性能倒也沒有那么差勁,屬于一個性價比非常高的數據結構。

最后,還是老規矩,我把完整的代碼放在了paste當中,大家感興趣可以點擊閱讀原文查看,代碼里都有詳細的注釋,大家應該都能看明白。

本文轉載自微信公眾號「 TechFlow」,可以通過以下二維碼關注。轉載本文請聯系 TechFlow公眾號。

 

責任編輯:武曉燕 來源: TechFlow
相關推薦

2020-04-27 07:05:58

二叉樹左子樹右子樹

2021-04-19 07:47:42

數據結構二叉樹Tree

2021-04-20 08:37:14

數據結構二叉樹

2022-10-26 23:58:02

二叉樹數組算法

2019-08-22 09:22:44

數據結構二叉搜索樹

2021-08-27 11:36:44

二叉樹回溯節點

2021-04-28 20:12:27

數據結構創建

2020-09-23 18:25:40

算法二叉樹多叉樹

2021-08-31 11:35:24

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

2021-03-17 08:19:22

二叉樹LeetCode

2013-07-15 16:35:55

二叉樹迭代器

2021-09-29 10:19:00

算法平衡二叉樹

2018-03-15 08:31:57

二叉樹存儲結構

2021-10-12 09:25:11

二叉樹樹形結構

2021-09-15 07:56:32

二叉樹層次遍歷

2021-01-13 10:03:36

二叉樹層序遍歷層次遍歷

2022-12-26 00:51:33

雙向鏈表二叉搜索樹

2021-09-02 11:31:28

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

2022-01-11 10:01:25

二叉搜索樹數量

2021-09-03 08:58:00

二叉搜索樹節點
點贊
收藏

51CTO技術棧公眾號

福利微拍一区二区| 麻豆精品一区二区综合av| 亚洲国产高清高潮精品美女| 日本精品一区在线观看| 黄色在线小视频| 精东粉嫩av免费一区二区三区| 欧美第一黄色网| 国产福利一区二区三区视频在线| 91精品国产精品| 亚洲欧美精品久久| 任你躁在线精品免费| 欧美日韩国产天堂| 乱妇乱女熟妇熟女网站| 黄色的网站在线观看| 91年精品国产| 97超碰资源| 波多野结衣在线观看一区| 欧美精品不卡| 深夜精品寂寞黄网站在线观看| 欧美xxxxx精品| 久久久久亚洲精品中文字幕| 在线观看日韩一区| 欧美成人三级在线视频| 久cao在线| 国产精品网站在线播放| 狠狠爱一区二区三区| 国产欧美第一页| 日韩精品欧美成人高清一区二区| 韩国19禁主播vip福利视频| 亚洲精品成人av久久| 欧美黄色网视频| 日韩免费性生活视频播放| 免费看污污网站| 韩日精品一区二区| 欧美日韩国产丝袜美女| www.日本在线视频| 中文在线免费| 亚洲欧洲精品一区二区三区不卡| 亚洲黄色一区二区三区| 狠狠v欧美ⅴ日韩v亚洲v大胸| 97久久超碰国产精品电影| 国产精品国产精品| www天堂在线| 国产在线国偷精品免费看| 国产狼人综合免费视频| 男操女视频网站| 天堂蜜桃91精品| 日韩av电影在线免费播放| 五月天综合激情| 国产精品日韩久久久| 欧美性视频精品| 久久国产黄色片| 香蕉亚洲视频| 国产成人亚洲综合91精品| 啦啦啦免费高清视频在线观看| 亚洲九九精品| 538国产精品一区二区免费视频| 日韩欧美高清在线观看| 国产一区二区三区成人欧美日韩在线观看 | 久久久99久久| 日本一区高清不卡| 大胆av不用播放器在线播放| 中文字幕乱码亚洲精品一区| 亚洲一区精彩视频| 黄网站免费在线播放| 亚洲男人天堂av| av片在线免费| 国产99在线| 色哟哟日韩精品| 在线看的黄色网址| 91麻豆精品| 91精品国产综合久久精品麻豆| 黄页网站在线看| 日韩aaa久久蜜桃av| 亚洲欧美日韩精品久久| 日本视频在线免费| 欧美视频二区| 日本不卡高字幕在线2019| 国产偷人爽久久久久久老妇app| 另类成人小视频在线| av在线不卡观看| 无码国产伦一区二区三区视频 | 国产自产v一区二区三区c| 91成人免费视频| 天天干天天舔天天射| 久久精品一区蜜桃臀影院| 中文字幕久精品免| av岛国在线| 欧美日韩免费观看一区二区三区| 韩国三级丰满少妇高潮| 美女久久99| 久久久99免费视频| 亚洲国产成人精品激情在线| 奇米一区二区三区av| 国产高清自拍99| 成人福利在线| 亚洲成人精品影院| 天天插天天操天天射| 99精品在免费线中文字幕网站一区| 精品一区二区三区三区| 麻豆视频在线免费看| 亚洲永久在线| 亚洲自拍小视频| 九色在线播放| 亚洲一区二区三区三| 韩国日本美国免费毛片| a看欧美黄色女同性恋| 永久免费精品影视网站| 国产污片在线观看| 麻豆91在线播放免费| 九九九久久久| 特级毛片在线| 欧美三级一区二区| 国内精品久久99人妻无码| 欧美粗暴jizz性欧美20| 国产精品久久久久77777| 人妻丰满熟妇av无码区hd| 日韩一区中文字幕| 国产精品人人妻人人爽人人牛| 国产精品中文字幕制服诱惑| 北条麻妃一区二区三区中文字幕| √资源天堂中文在线| 国产成人免费在线观看不卡| 亚洲欧美日韩在线综合| 高清电影一区| 亚洲美女福利视频网站| 国产极品在线播放| 国产精品中文字幕日韩精品 | 成人影视免费观看| 99热这里只有精品8| 99在线观看| 国产三区在线观看| 欧美日韩一级二级| 免费看日本黄色片| 奇米精品一区二区三区在线观看| 蜜桃精品久久久久久久免费影院| 91老司机福利在线| 欧美大片日本大片免费观看| 日本老熟俱乐部h0930| 国产综合色在线| 中文字幕av导航| 99亚洲男女激情在线观看| 日韩在线视频一区| 亚洲天堂aaa| 国产精品久久久一本精品| 特级丰满少妇一级| 久久一本综合| 成人中文字幕+乱码+中文字幕| av在线免费观看网| 欧美日韩日日骚| 奇米网一区二区| 久久精品国产精品亚洲精品| 亚洲狠狠婷婷综合久久久| 国产一区二区三区四区五区3d| 一区二区三区日韩在线| 亚洲天堂自拍偷拍| 亚洲欧洲国产专区| 制服.丝袜.亚洲.中文.综合懂| 欧美日韩亚洲一区三区| 国产亚洲一区在线播放 | 国内成人在线| 精品伦理一区二区三区| 美女福利一区二区| 在线成人激情视频| 91成人国产综合久久精品| 亚洲日本欧美天堂| 四虎成人免费视频| 亚洲综合日韩| 一区二区三区国| 91麻豆精品激情在线观看最新 | 国产乱子夫妻xx黑人xyx真爽| 竹菊久久久久久久| 国产女人18毛片水18精品| 麻豆影院在线观看| 精品欧美久久久| 天天干天天干天天| 中文字幕在线观看不卡| 韩国av中国字幕| 免费看的黄色欧美网站| 一区二区三区四区国产| 综合成人在线| 国产成人a亚洲精品| 精品欧美色视频网站在线观看| 欧美不卡一区二区三区四区| 人人爽人人爽人人片av| 国产精品短视频| 少妇被狂c下部羞羞漫画| 日韩电影在线观看一区| 免费极品av一视觉盛宴| 精品在线播放| 91免费看蜜桃| 范冰冰一级做a爰片久久毛片| 久久精品色欧美aⅴ一区二区| 天天干天天草天天射| 欧美精品粉嫩高潮一区二区| 国产成人一区二区三区影院在线| 国产精品久线观看视频| av黄色一级片| 国模娜娜一区二区三区| 日韩av在线综合| 中文在线日韩| 日本一区不卡| 欧美自拍视频| 亚洲最大福利视频网站| 日韩免费小视频| 久久久久一本一区二区青青蜜月| 成人欧美一区| 精品亚洲男同gayvideo网站| 国产sm主人调教女m视频| 91高清视频免费看| www成人在线| 一区二区三区精品在线| 手机免费观看av| 久久欧美一区二区| 先锋资源av在线| 国产高清不卡二三区| 在线能看的av网站| 日韩精品一卡二卡三卡四卡无卡| 狠狠干 狠狠操| 国模大胆一区二区三区| 久久99国产精品一区| 欧美午夜精彩| 欧美男人的天堂| 天堂在线精品| 国内一区在线| 国产精品jk白丝蜜臀av小说| 69堂成人精品视频免费| 国产精品日本一区二区不卡视频 | 亚洲免费专区| 精品免费视频123区| 成人福利一区| 国产精品久久精品国产| 视频在线观看免费影院欧美meiju| 国产精品一久久香蕉国产线看观看| 日韩av大片站长工具| 欧美一级淫片aaaaaaa视频| 国内激情视频在线观看| 午夜精品久久17c| 韩国成人免费视频| 久久久久久网址| 19禁羞羞电影院在线观看| 久久免费成人精品视频| 成人性生交大片免费看在线播放| 欧美放荡办公室videos4k| 性国产高清在线观看| 欧美裸体xxxx极品少妇| 免费毛片在线看片免费丝瓜视频 | 自拍偷拍99| 亚洲精品二区三区| 大荫蒂性生交片| 亚洲高清不卡| 国产91美女视频| 久久久久久夜| 牛夜精品久久久久久久| 黄网站免费久久| 中文字幕人妻无码系列第三区| 国产一区欧美二区| 亚洲一区和二区| 99免费精品在线| 六月婷婷七月丁香| 国产精品国产自产拍高清av王其 | 爱爱的免费视频| 久久综合九色综合欧美就去吻| 在线观看日本中文字幕| 中文字幕一区二区三区四区 | 国产一区美女| 人妻熟妇乱又伦精品视频| 丝袜亚洲另类丝袜在线| 九色porny自拍| 国产成人免费视频网站高清观看视频| 伊人久久一区二区三区| 久久精子c满五个校花| 在线观看美女av| 午夜视频在线观看一区二区三区| 人妻丰满熟妇av无码区| 欧美高清视频在线高清观看mv色露露十八| 国产xxxx在线观看| 日韩精品在线影院| 青青影院在线观看| 久久久久久一区二区三区| 亚洲校园激情春色| 成人久久久久爱| 美女扒开腿让男人桶爽久久动漫| 日本成人黄色免费看| 亚洲色图网站| wwwxxx黄色片| 国产麻豆日韩欧美久久| 国内精品久久99人妻无码| ●精品国产综合乱码久久久久| 日韩av电影网址| 欧美日韩国产经典色站一区二区三区| 亚洲第一天堂网| 一区二区三区 在线观看视| 黑人极品ⅴideos精品欧美棵| 国产精品电影网| 亚洲无线观看| 亚洲二区自拍| 亚洲欧美日韩国产一区| 毛片毛片毛片毛片毛| 久久久蜜桃精品| 免费在线一级片| 欧美日韩三级视频| 欧美精品少妇| 久久久久久久91| 在线高清欧美| 欧美中日韩一区二区三区| 一区二区自拍| 日本一本在线视频| 国产精品久久久久久亚洲伦| 亚洲AV无码成人精品区东京热| 日韩亚洲欧美在线观看| sese一区| 国产91九色视频| 麻豆精品av| 韩日视频在线观看| 国产一区二区毛片| 亚洲女同二女同志奶水| 在线免费观看日本一区| 深夜视频在线免费| 欧美精品国产精品日韩精品| 91在线播放观看| 日韩国产精品久久| 亚洲国产精品成人综合久久久| 一区二区三区中文字幕精品精品 | 国产一级中文字幕| 91精品国产综合久久小美女| 波多野结衣在线网站| 国产不卡在线观看| 亚洲精品**不卡在线播he| 成人免费毛片在线观看| 国产精品18久久久久久久网站| 天海翼在线视频| 欧美日韩国产美| 丝袜美腿美女被狂躁在线观看| 国产精品福利片| 国产欧美日韩精品高清二区综合区| jizzjizz国产精品喷水| 成人精品一区二区三区四区 | 9a蜜桃久久久久久免费| 亚洲字幕久久| 最好看的中文字幕| 亚洲精品国久久99热| 国产乱码精品一区二三区蜜臂| 日韩视频精品在线| av在线国产精品| 91视频成人免费| 美腿丝袜在线亚洲一区| 蜜桃av免费观看| 91精品国模一区二区三区| 操你啦视频在线| 99国产在线观看| 狠狠色丁香久久综合频道| 97精品人人妻人人| 黑人狂躁日本妞一区二区三区 | 国内自拍视频一区| 欧美激情综合五月色丁香| 亚洲网站免费观看| 欧美大码xxxx| 精品按摩偷拍| 又色又爽又高潮免费视频国产| 国产精品人妖ts系列视频| 国产精品老熟女视频一区二区| 欧美精品日韩www.p站| 老牛精品亚洲成av人片| 男人透女人免费视频| 国产精品久久久久毛片软件| 亚洲AV无码成人片在线观看| 97视频在线免费观看| re久久精品视频| 91香蕉视频免费看| 精品久久久精品| 91在线网址| 99精品欧美一区二区三区| 亚洲中字在线| 国产男女猛烈无遮挡在线喷水| 精品日韩在线观看| 日韩欧美一区二区三区免费观看 | 一区二区三区免费高清视频| 日韩成人小视频| 伊人久久大香伊蕉在人线观看热v| 成人免费性视频| 国产女人aaa级久久久级| 99热这里只有精品5| 2021国产精品视频| 午夜精品毛片| 丰满少妇一区二区三区| 欧美精品aⅴ在线视频| 国产乱码精品一区二三赶尸艳谈| 日韩欧美一区二区三区四区| 国产电影一区在线| 天天操天天干天天摸| 欧美国产视频日韩| 日韩一区电影| 欧美大片免费播放器| 在线播放视频一区| 桃花岛tv亚洲品质| www.欧美黄色| 成人免费在线观看入口| 同心难改在线观看| 91手机视频在线观看|