精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人中文字幕在线播放| 国产精品美女久久久久久免费| 亚洲无在线观看| 第一中文字幕在线| 久久亚洲捆绑美女| 国产精品一二三在线| 黄色一级免费视频| 国产一区二区精品久| 日韩一区二区三区四区| 一本大道熟女人妻中文字幕在线| 伦xxxx在线| 91性感美女视频| 91精品综合久久久久久五月天| 国产精品成人av久久| 成人毛片免费看| 亚洲国产精品中文| 午夜视频在线网站| 色黄视频在线观看| 一区二区日韩电影| 午夜精品一区二区在线观看| 俄罗斯嫩小性bbwbbw| 蜜臀精品久久久久久蜜臀| 欧美精品福利在线| 精品女人久久久| 免费看久久久| 精品视频一区二区三区免费| 丁香六月激情婷婷| 亚洲成人三级| 久久精品日韩一区二区三区| 99视频国产精品免费观看| 一区二区视频免费| 伊人精品在线| www.日韩av.com| 中文字幕网站在线观看| 亚洲一区二区三区四区电影| 欧美三级韩国三级日本一级| 乱子伦视频在线看| 岛国av在线网站| 一级做a爱片久久| 少妇熟女一区二区| av网站在线免费播放| 91美女福利视频| 国产亚洲欧美一区二区| 亚洲老妇色熟女老太| 国产精品一区二区在线看| 国产精品高潮呻吟久久av黑人| 中文字幕一区在线播放| 国产亚洲一级| 欧美一区亚洲一区| 中文字幕一区二区三区精品| 亚洲私拍自拍| 久久久久久一区二区三区| tube国产麻豆| 午夜激情一区| 欧美激情日韩图片| 日本一区二区网站| 中文在线一区| 日韩av大片免费看| 在线观看你懂的网站| 手机精品视频在线观看| 国产精品高清在线观看| 伊人久久中文字幕| 丝袜亚洲另类欧美| 青草热久免费精品视频| 中文字幕手机在线视频| 免费观看在线综合色| 国产精品一区=区| 97超碰人人草| 国产伦精品一区二区三区视频青涩 | 成人高清视频观看www| 97人妻人人澡人人爽人人精品| 国产综合一区二区| 国产98在线|日韩| 人妻一区二区三区免费| 97久久超碰国产精品| 欧美日韩视频在线一区二区观看视频| 第三区美女视频在线| 国产精品久久久久影院亚瑟 | 99在线视频免费观看| 蜜桃av噜噜一区二区三区麻豆| 99在线视频精品| 欧美精品免费观看二区| 午夜免费播放观看在线视频| 亚洲精品欧美专区| 久久久久久久久久久99| 亚洲精品在线影院| 91精品国产乱| 女同性恋一区二区三区| 欧美伦理影院| 欧美二区在线播放| www.久久久久久久| 国产精品白丝av| 玛丽玛丽电影原版免费观看1977 | 大色综合视频网站在线播放| 精品自在线视频| 久久久蜜桃一区二区| 精品一区二区三区在线播放视频| 动漫精品视频| 成年人视频网站在线| 亚洲永久免费视频| 日韩中文字幕组| 日韩中文字幕无砖| 亚洲免费视频在线观看| 91杏吧porn蝌蚪| 久久黄色影院| 成人国产一区二区| 国产大学生校花援交在线播放| 亚洲激情五月婷婷| 久久久久国产精品熟女影院| japanese色系久久精品| 中文字幕亚洲色图| 久久艹免费视频| 国产一区久久久| 日本一区二区三区免费看| 呦呦在线视频| 欧美日韩国产影片| 白白色免费视频| 在线观看不卡| 亚洲影院污污.| 日本免费视频在线观看| 色悠悠久久综合| 99久久免费看精品国产一区| 久久精品国内一区二区三区水蜜桃| 欧美一级成年大片在线观看| 性网爆门事件集合av| 中文字幕在线免费不卡| 国产天堂在线播放| 亚洲国产精品嫩草影院久久av| 久久久久久高潮国产精品视| 99精品国产99久久久久久97| 国产精品私人影院| www.色偷偷.com| 自拍自偷一区二区三区| 97香蕉超级碰碰久久免费软件 | 91丝袜一区二区三区| 成人av在线一区二区三区| wwwjizzjizzcom| 四虎国产精品免费久久| 中文在线不卡视频| 亚洲天堂视频在线播放| 久久久一区二区| 92看片淫黄大片一级| 麻豆一区二区麻豆免费观看| 久久久久久国产免费| 亚洲精品一区二区三区区别| 亚洲一线二线三线视频| 91亚洲一线产区二线产区| 欧美在线网址| 99国产在线视频| 国产在线拍揄自揄拍视频 | 少妇愉情理伦片bd| 真实国产乱子伦精品一区二区三区| 成人午夜两性视频| 性网站在线观看| 精品国产一区二区亚洲人成毛片| 久草免费新视频| 成人18精品视频| 91精品91久久久中77777老牛| 亚洲精品亚洲人成在线| 欧洲亚洲妇女av| 国产高清免费在线播放| 欧美日韩一区在线观看| 亚洲国产精品一区二区久久hs| 久久国产视频网| 国产手机视频在线观看| 日韩免费一级| 久久久综合免费视频| 噜噜噜久久,亚洲精品国产品| 日韩欧美精品网站| 精品一区二区三区蜜桃在线| 久久电影网站中文字幕| 欧美日韩激情四射| 久久香蕉精品香蕉| 国产成人精品久久| 国产在线二区| 亚洲激情中文字幕| 免费视频网站在线观看入口| 综合久久久久久| 国产黑丝一区二区| 日韩成人伦理电影在线观看| 樱空桃在线播放| 欧美重口另类| 91精品国产自产在线老师啪| www.8ⅹ8ⅹ羞羞漫画在线看| 亚洲网站在线播放| 99久久免费国产精精品| 欧美日韩国产精品一区| 一区二区三区在线观看免费视频| 国产一区二区三区香蕉| 无码精品a∨在线观看中文| 久久密一区二区三区| 国产激情一区二区三区在线观看| 日韩av一卡| 久久伊人精品天天| 日韩av免费观影| 欧美日韩中文字幕精品| 欧美不卡视频在线观看| 国产精品国产a| 久久人妻一区二区| 久久激情五月婷婷| 欧美日韩在线中文| 综合久久亚洲| 天堂一区二区三区| 国产精品男女| 成人在线视频网| 久久久久久久| 欧美激情视频网| 久操视频在线| 亚洲最新av在线| 天堂在线资源库| 91精品国产综合久久精品性色 | sis001亚洲原创区| 久久国产精品影片| 国产香蕉视频在线看| 欧美精品一区二区三区蜜桃| 国产男男gay体育生网站| 色综合天天天天做夜夜夜夜做| 国产精彩视频在线| 亚洲天堂a在线| 成年人在线免费看片| 白白色 亚洲乱淫| 91丨porny丨九色| 麻豆精品在线观看| 久草综合在线观看| 国产精品尤物| 欧美a v在线播放| 黄色免费成人| 波多野结衣 作品| 51精产品一区一区三区| 亚洲图片在线观看| 国内成人自拍| 欧美一区二区高清在线观看| 欧美日韩一区二区三区四区不卡| 成人av蜜桃| 99精品国产高清一区二区麻豆| 成人性教育视频在线观看| 成人午夜毛片| 国产精品久久久久久久久久免费 | 亚洲第一精品影视| 欧美a级免费视频| 欧美亚洲不卡| 日韩成人三级视频| 欧美激情日韩| 日本福利视频在线观看| 中文无码久久精品| 日本xxxxx18| 欧美日韩国产免费观看| 蜜桃视频一区二区在线观看| 欧美日韩免费| av在线播放亚洲| 亚洲尤物在线| 成人精品视频一区二区| 日本强好片久久久久久aaa| 国产三级三级三级看三级| 日韩成人午夜电影| 亚洲xxx在线观看| 国产精品影视天天线| 性一交一黄一片| caoporm超碰国产精品| 黄色工厂在线观看| 久久精品欧美日韩精品| 久久久精品成人| 亚洲视频小说图片| 国产黄色片视频| 欧美特级www| 国产精品久免费的黄网站| 91电影在线观看| 91中文字幕在线播放| 欧美xxxx在线观看| 亚洲av片一区二区三区| 国产午夜精品一区二区三区| 日本在线看片免费人成视1000| 欧美xxxx18性欧美| 成年男女免费视频网站不卡| 亚洲高清视频在线观看| 神马久久一区二区三区| 欧美日韩精品一区| 日韩一区二区三区免费播放| 欧美性受黑人性爽| 亚洲日本免费| 日本三区在线观看| 国产精品亚洲一区二区三区妖精| 久久午夜夜伦鲁鲁片| 欧美国产一区在线| 校园春色 亚洲| 色综合一区二区三区| 国产精品一区二区三区在线免费观看| 精品乱码亚洲一区二区不卡| 国产特黄在线| 欧美激情视频一区二区三区不卡| 亚洲人成午夜免电影费观看| 国产精品香蕉在线观看| 91精品丝袜国产高跟在线| 欧美午夜精品久久久久久蜜| 亚洲不卡av不卡一区二区| 男人和女人啪啪网站| 捆绑调教美女网站视频一区| 黄色激情在线观看| 国产精品麻豆欧美日韩ww| 国产精品18p| 欧美乱妇20p| 性感美女一级片| 欧美高清videos高潮hd| 日本另类视频| 精品一区二区久久久久久久网站| 久久精品久久久| 欧美黄色性生活| 粉嫩一区二区三区性色av| 欧美激情视频二区| 福利微拍一区二区| 国产成a人亚洲精v品无码| 亚洲片在线资源| 大黄网站在线观看| 亚洲一区亚洲二区亚洲三区| 日韩大片在线| 99蜜桃臀久久久欧美精品网站| 粉嫩高潮美女一区二区三区 | 日本美女视频一区| 久久夜色精品国产噜噜av| 国产第一页在线播放| 欧美一级二级三级蜜桃| 91社区在线| 国产精品大陆在线观看| 日韩三区视频| 亚洲国产成人精品无码区99| 国产精品1024| 国产天堂av在线| 欧美视频精品在线观看| 激情小视频在线观看| 57pao成人国产永久免费| 高潮按摩久久久久久av免费| 国产精品啪啪啪视频| 精品一区二区三区久久| 网站永久看片免费| 欧美性猛交xxxxxxxx| 激情小视频在线观看| 国产99视频在线观看| 亚洲aa在线| 又粗又黑又大的吊av| 99精品黄色片免费大全| 日本在线小视频| 亚洲精品456在线播放狼人| wwww亚洲| 国产亚洲欧美另类一区二区三区| 亚洲清纯自拍| 久草免费资源站| 亚洲一级二级在线| 欧美视频在线观看一区二区三区| 欧美—级a级欧美特级ar全黄| 66精品视频在线观看| 欧美日韩不卡在线视频| 成人激情小说乱人伦| 欧美一二三区视频| 亚洲欧美日韩精品久久奇米色影视| 人人草在线视频| 日本在线成人一区二区| 奇米在线7777在线精品| 中文字幕资源站| 日韩视频免费直播| 99爱在线观看| 奇米视频888战线精品播放| 日韩国产在线观看一区| 日本激情视频一区二区三区| 欧美一级日韩一级| 97人人在线视频| 日韩精品另类天天更新| 精品一区二区在线看| 久久无码精品丰满人妻| 日韩av在线一区| 国产亚洲人成a在线v网站| 免费观看中文字幕| 不卡一二三区首页| 国产性生活视频| 久久婷婷国产麻豆91天堂| 国产+成+人+亚洲欧洲在线| 日本黄色三级大片| 中文字幕一区二区日韩精品绯色| 亚洲欧美强伦一区二区| 日本伊人精品一区二区三区介绍| 91欧美国产| 欧美一级片黄色| 欧美性猛片xxxx免费看久爱| av网址在线播放| 久久久亚洲综合网站| 老汉av免费一区二区三区| 国产污视频在线看| 在线不卡国产精品| 国产精品一区三区在线观看| 亚洲欧洲日产国码无码久久99| 国产精品久久久久婷婷二区次| 黑人操亚洲女人| 国产精品久久久久久久久久久新郎 | 亚洲精品wwwww| 日韩福利在线观看| 男人用嘴添女人下身免费视频| 中文字幕在线观看不卡| 日韩porn| 国产伦理久久久| 精品一二三四在线| 潘金莲一级淫片aaaaaa播放|