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

一個套路,寫出來二叉樹的迭代遍歷

開發(fā) 前端
實踐過的同學,也會發(fā)現(xiàn)使用迭代法實現(xiàn)先中后序遍歷,很難寫出統(tǒng)一的代碼,不像是遞歸法,實現(xiàn)了其中的一種遍歷方式,其他兩種只要稍稍改一下節(jié)點順序就可以了。

[[411706]]

二叉樹的統(tǒng)一迭代法

此時我們在二叉樹:一入遞歸深似海,從此offer是路人中用遞歸的方式,實現(xiàn)了二叉樹前中后序的遍歷。

在二叉樹:聽說遞歸能做的,棧也能做!中用棧實現(xiàn)了二叉樹前后中序的迭代遍歷(非遞歸)。

之后我們發(fā)現(xiàn)迭代法實現(xiàn)的先中后序,其實風格也不是那么統(tǒng)一,除了先序和后序,有關聯(lián),中序完全就是另一個風格了,一會用棧遍歷,一會又用指針來遍歷。

實踐過的同學,也會發(fā)現(xiàn)使用迭代法實現(xiàn)先中后序遍歷,很難寫出統(tǒng)一的代碼,不像是遞歸法,實現(xiàn)了其中的一種遍歷方式,其他兩種只要稍稍改一下節(jié)點順序就可以了。

其實針對三種遍歷方式,使用迭代法是可以寫出統(tǒng)一風格的代碼!

重頭戲來了,接下來介紹一下統(tǒng)一寫法。

我們以中序遍歷為例,在二叉樹:聽說遞歸能做的,棧也能做!中提到說使用棧的話,無法同時解決訪問節(jié)點(遍歷節(jié)點)和處理節(jié)點(將元素放進結果集)不一致的情況。

那我們就將訪問的節(jié)點放入棧中,把要處理的節(jié)點也放入棧中但是要做標記。

如何標記呢,就是要處理的節(jié)點放入棧之后,緊接著放入一個空指針作為標記。 這種方法也可以叫做標記法。

迭代法中序遍歷

中序遍歷代碼如下:(詳細注釋)

  1. class Solution { 
  2. public
  3.     vector<int> inorderTraversal(TreeNode* root) { 
  4.         vector<int> result; 
  5.         stack<TreeNode*> st; 
  6.         if (root != NULL) st.push(root); 
  7.         while (!st.empty()) { 
  8.             TreeNode* node = st.top(); 
  9.             if (node != NULL) { 
  10.                 st.pop(); // 將該節(jié)點彈出,避免重復操作,下面再將右中左節(jié)點添加到棧中 
  11.                 if (node->right) st.push(node->right);  // 添加右節(jié)點(空節(jié)點不入棧) 
  12.  
  13.                 st.push(node);                          // 添加中節(jié)點 
  14.                 st.push(NULL); // 中節(jié)點訪問過,但是還沒有處理,加入空節(jié)點做為標記。 
  15.  
  16.                 if (node->left) st.push(node->left);    // 添加左節(jié)點(空節(jié)點不入棧) 
  17.             } else { // 只有遇到空節(jié)點的時候,才將下一個節(jié)點放進結果集 
  18.                 st.pop();           // 將空節(jié)點彈出 
  19.                 node = st.top();    // 重新取出棧中元素 
  20.                 st.pop(); 
  21.                 result.push_back(node->val); // 加入到結果集 
  22.             } 
  23.         } 
  24.         return result; 
  25.     } 
  26. }; 

看代碼有點抽象我們來看一下動畫(中序遍歷):

中序遍歷迭代(統(tǒng)一寫法)

動畫中,result數(shù)組就是最終結果集。

可以看出我們將訪問的節(jié)點直接加入到棧中,但如果是處理的節(jié)點則后面放入一個空節(jié)點, 這樣只有空節(jié)點彈出的時候,才將下一個節(jié)點放進結果集。

此時我們再來看前序遍歷代碼。

迭代法前序遍歷

迭代法前序遍歷代碼如下:(注意此時我們和中序遍歷相比僅僅改變了兩行代碼的順序)

  1. class Solution { 
  2. public
  3.     vector<int> preorderTraversal(TreeNode* root) { 
  4.         vector<int> result; 
  5.         stack<TreeNode*> st; 
  6.         if (root != NULL) st.push(root); 
  7.         while (!st.empty()) { 
  8.             TreeNode* node = st.top(); 
  9.             if (node != NULL) { 
  10.                 st.pop(); 
  11.                 if (node->right) st.push(node->right);  // 右 
  12.                 if (node->left) st.push(node->left);    // 左 
  13.                 st.push(node);                          // 中 
  14.                 st.push(NULL); 
  15.             } else { 
  16.                 st.pop(); 
  17.                 node = st.top(); 
  18.                 st.pop(); 
  19.                 result.push_back(node->val); 
  20.             } 
  21.         } 
  22.         return result; 
  23.     } 
  24. }; 

迭代法后序遍歷

后續(xù)遍歷代碼如下:(注意此時我們和中序遍歷相比僅僅改變了兩行代碼的順序)

  1. class Solution { 
  2. public
  3.     vector<int> postorderTraversal(TreeNode* root) { 
  4.         vector<int> result; 
  5.         stack<TreeNode*> st; 
  6.         if (root != NULL) st.push(root); 
  7.         while (!st.empty()) { 
  8.             TreeNode* node = st.top(); 
  9.             if (node != NULL) { 
  10.                 st.pop(); 
  11.                 st.push(node);                          // 中 
  12.                 st.push(NULL); 
  13.  
  14.                 if (node->right) st.push(node->right);  // 右 
  15.                 if (node->left) st.push(node->left);    // 左 
  16.  
  17.             } else { 
  18.                 st.pop(); 
  19.                 node = st.top(); 
  20.                 st.pop(); 
  21.                 result.push_back(node->val); 
  22.             } 
  23.         } 
  24.         return result; 
  25.     } 
  26. }; 

總結

此時我們寫出了統(tǒng)一風格的迭代法,不用在糾結于前序寫出來了,中序寫不出來的情況了。

但是統(tǒng)一風格的迭代法并不好理解,而且想在面試直接寫出來還有難度的。

所以大家根據(jù)自己的個人喜好,對于二叉樹的前中后序遍歷,選擇一種自己容易理解的遞歸和迭代法。

其他語言版本

Java:迭代法前序遍歷代碼如下:

  1. class Solution { 
  2.     public List<Integer> preorderTraversal(TreeNode root) { 
  3.         List<Integer> result = new LinkedList<>(); 
  4.         Stack<TreeNode> st = new Stack<>(); 
  5.         if (root != null) st.push(root); 
  6.         while (!st.empty()) { 
  7.             TreeNode node = st.peek(); 
  8.             if (node != null) { 
  9.                 st.pop(); // 將該節(jié)點彈出,避免重復操作,下面再將右中左節(jié)點添加到棧中 
  10.                 if (node.right!=null) st.push(node.right);  // 添加右節(jié)點(空節(jié)點不入棧) 
  11.                 if (node.left!=null) st.push(node.left);    // 添加左節(jié)點(空節(jié)點不入棧) 
  12.                 st.push(node);                          // 添加中節(jié)點 
  13.                 st.push(null); // 中節(jié)點訪問過,但是還沒有處理,加入空節(jié)點做為標記。 
  14.                  
  15.             } else { // 只有遇到空節(jié)點的時候,才將下一個節(jié)點放進結果集 
  16.                 st.pop();           // 將空節(jié)點彈出 
  17.                 node = st.peek();    // 重新取出棧中元素 
  18.                 st.pop(); 
  19.                 result.add(node.val); // 加入到結果集 
  20.             } 
  21.         } 
  22.         return result; 
  23.     } 

迭代法中序遍歷代碼如下:

  1. class Solution { 
  2. public List<Integer> inorderTraversal(TreeNode root) { 
  3.         List<Integer> result = new LinkedList<>(); 
  4.     Stack<TreeNode> st = new Stack<>(); 
  5.     if (root != null) st.push(root); 
  6.     while (!st.empty()) { 
  7.         TreeNode node = st.peek(); 
  8.         if (node != null) { 
  9.             st.pop(); // 將該節(jié)點彈出,避免重復操作,下面再將右中左節(jié)點添加到棧中 
  10.             if (node.right!=null) st.push(node.right);  // 添加右節(jié)點(空節(jié)點不入棧) 
  11.             st.push(node);                          // 添加中節(jié)點 
  12.             st.push(null); // 中節(jié)點訪問過,但是還沒有處理,加入空節(jié)點做為標記。 
  13.  
  14.             if (node.left!=null) st.push(node.left);    // 添加左節(jié)點(空節(jié)點不入棧) 
  15.         } else { // 只有遇到空節(jié)點的時候,才將下一個節(jié)點放進結果集 
  16.             st.pop();           // 將空節(jié)點彈出 
  17.             node = st.peek();    // 重新取出棧中元素 
  18.             st.pop(); 
  19.             result.add(node.val); // 加入到結果集 
  20.         } 
  21.     } 
  22.     return result; 

迭代法后序遍歷代碼如下:

  1. class Solution { 
  2.    public List<Integer> postorderTraversal(TreeNode root) { 
  3.         List<Integer> result = new LinkedList<>(); 
  4.         Stack<TreeNode> st = new Stack<>(); 
  5.         if (root != null) st.push(root); 
  6.         while (!st.empty()) { 
  7.             TreeNode node = st.peek(); 
  8.             if (node != null) { 
  9.                 st.pop(); // 將該節(jié)點彈出,避免重復操作,下面再將右中左節(jié)點添加到棧中 
  10.                 st.push(node);                          // 添加中節(jié)點 
  11.                 st.push(null); // 中節(jié)點訪問過,但是還沒有處理,加入空節(jié)點做為標記。 
  12.                 if (node.right!=null) st.push(node.right);  // 添加右節(jié)點(空節(jié)點不入棧) 
  13.                 if (node.left!=null) st.push(node.left);    // 添加左節(jié)點(空節(jié)點不入棧)          
  14.                                 
  15.             } else { // 只有遇到空節(jié)點的時候,才將下一個節(jié)點放進結果集 
  16.                 st.pop();           // 將空節(jié)點彈出 
  17.                 node = st.peek();    // 重新取出棧中元素 
  18.                 st.pop(); 
  19.                 result.add(node.val); // 加入到結果集 
  20.             } 
  21.         } 
  22.         return result; 
  23.    } 

Python:

迭代法前序遍歷:

  1. class Solution: 
  2.     def preorderTraversal(self, root: TreeNode) -> List[int]: 
  3.         result = [] 
  4.         st= [] 
  5.         if root: 
  6.             st.append(root) 
  7.         while st: 
  8.             node = st.pop() 
  9.             if node != None: 
  10.                 if node.right: #右 
  11.                     st.append(node.right
  12.                 if node.left: #左 
  13.                     st.append(node.left
  14.                 st.append(node) #中 
  15.                 st.append(None) 
  16.             else
  17.                 node = st.pop() 
  18.                 result.append(node.val) 
  19.         return result 

迭代法中序遍歷:

  1. class Solution: 
  2.     def inorderTraversal(self, root: TreeNode) -> List[int]: 
  3.         result = [] 
  4.         st = [] 
  5.         if root: 
  6.             st.append(root) 
  7.         while st: 
  8.             node = st.pop() 
  9.             if node != None: 
  10.                 if node.right: #添加右節(jié)點(空節(jié)點不入棧) 
  11.                     st.append(node.right
  12.                  
  13.                 st.append(node) #添加中節(jié)點 
  14.                 st.append(None) #中節(jié)點訪問過,但是還沒有處理,加入空節(jié)點做為標記。 
  15.                  
  16.                 if node.left: #添加左節(jié)點(空節(jié)點不入棧) 
  17.                     st.append(node.left
  18.             else: #只有遇到空節(jié)點的時候,才將下一個節(jié)點放進結果集 
  19.                 node = st.pop() #重新取出棧中元素 
  20.                 result.append(node.val) #加入到結果集 
  21.         return result 

迭代法后序遍歷:

  1. class Solution: 
  2.     def postorderTraversal(self, root: TreeNode) -> List[int]: 
  3.         result = [] 
  4.         st = [] 
  5.         if root: 
  6.             st.append(root) 
  7.         while st: 
  8.             node = st.pop() 
  9.             if node != None: 
  10.                 st.append(node) #中 
  11.                 st.append(None) 
  12.                  
  13.                 if node.right: #右 
  14.                     st.append(node.right
  15.                 if node.left: #左 
  16.                     st.append(node.left
  17.             else
  18.                 node = st.pop() 
  19.                 result.append(node.val) 
  20.         return result 

舊文鏈接:二叉樹:前中后序迭代方式的寫法就不能統(tǒng)一一下么?

 

責任編輯:武曉燕 來源: 代碼隨想錄
相關推薦

2020-04-27 07:05:58

二叉樹左子樹右子樹

2021-07-13 11:32:41

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

2013-07-15 16:35:55

二叉樹迭代器

2022-10-26 23:58:02

二叉樹數(shù)組算法

2021-04-20 08:37:14

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

2023-05-08 15:57:16

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

2021-09-15 07:56:32

二叉樹層次遍歷

2021-09-13 17:58:11

二叉樹層序算法

2021-02-28 22:00:28

二叉樹節(jié)點序列

2021-01-13 10:03:36

二叉樹層序遍歷層次遍歷

2009-08-11 13:29:57

C#二叉樹遍歷

2021-05-06 17:46:30

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

2021-04-19 07:47:42

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

2024-01-23 12:54:00

C++編程語言代碼

2021-04-28 20:12:27

數(shù)據(jù)結構創(chuàng)建

2021-11-29 10:40:58

二叉樹鏡像節(jié)點

2021-08-27 11:36:44

二叉樹回溯節(jié)點

2021-03-17 08:19:22

二叉樹LeetCode

2021-09-29 10:19:00

算法平衡二叉樹

2021-12-17 14:26:58

二叉樹節(jié)點數(shù)量
點贊
收藏

51CTO技術棧公眾號

香蕉在线观看视频| 亚洲欧洲日韩精品| 精品国产一区二区三区四| 欧美人与拘性视交免费看| 欧美综合在线视频| 少妇高潮流白浆| 天堂av手机版| 精品一区免费av| 高清在线视频日韩欧美| 日本爱爱爱视频| 麻豆精品在线| 在线亚洲一区观看| 免费高清一区二区三区| jizz在线观看视频| 国产成人精品亚洲午夜麻豆| 日本伊人精品一区二区三区介绍| 日韩a级片在线观看| www日本高清视频| 香蕉成人久久| 欧美xxxx18性欧美| 六月婷婷七月丁香| 一区二区三区四区视频免费观看| 91成人免费电影| 97超碰在线人人| 中国一级黄色录像| 红桃视频一区二区三区免费| 国产h片在线观看| 亚洲视频 欧洲视频| 欧美人xxxxx| 亚洲美女综合网| 极品尤物av久久免费看| 日韩电影免费在线观看中文字幕| 欧美一级黄色影院| 秋霞伦理一区| 亚洲一区二区三区四区的| 亚洲 国产 欧美一区| 在线观看xxx| 成人午夜视频福利| 91在线视频九色| eeuss中文字幕| 亚洲精品无吗| 日韩精品免费在线观看| 国产视频精品视频| 日韩免费一级| 欧美一级日韩不卡播放免费| 亚洲人辣妹窥探嘘嘘| 欧美日韩美女| 欧美性精品220| 国产精品沙发午睡系列| 国产精品一区二区日韩| 亚洲成a人片综合在线| 日韩在线观看免费高清完整版| 成人资源av| 国产又黄又大又爽| 久久精品国产久精国产| 国产在线a不卡| 国产日韩精品中文字无码| 综合亚洲色图| 亚洲人午夜精品| av黄色在线免费观看| 国产精品三级| 中文字幕亚洲一区二区三区| 少妇人妻好深好紧精品无码| 精品理论电影在线| 欧美一卡二卡三卡四卡| 亚洲第一成肉网| 在线精品自拍| 日韩精品亚洲元码| japanese中文字幕| 欧美在线色图| 久久精品中文字幕电影| 欧美性猛交xxxxx少妇| 欧美va天堂在线| 欧美精品videossex88| 日韩免费不卡视频| 蜜桃视频一区| 成人有码在线视频| 国产又黄又猛又粗又爽| 欧美一级专区| 国产精品一区=区| 国产wwwxxx| a亚洲天堂av| 日韩成人在线资源| 免费黄色电影在线观看| 依依成人精品视频| 国产精品50p| 国产第一亚洲| 欧美精品一区二区久久婷婷| www.99r| 久久爱www.| 亚洲精品理论电影| 四季av中文字幕| 国产又黄又粗的视频| 国产一区二区三区黄网站| 亚洲二区中文字幕| 国产农村妇女精品一区| 欧美在线亚洲综合一区| 啪一啪鲁一鲁2019在线视频| 小嫩苞一区二区三区| 国模大胆一区二区三区| 国产成人精品av在线| 99精品在线视频观看| 91麻豆免费看片| dy888午夜| 成人免费网站视频| 日韩美一区二区三区| 在线不卡av电影| 女人色偷偷aa久久天堂| 国产精品第一第二| 丁香六月婷婷综合| 日韩精品1区2区3区| 97中文在线观看| 阿v免费在线观看| 亚洲成在人线免费| 亚洲精品成人在线播放| 免费精品国产| 欧美国产日韩一区二区三区| 在线观看免费视频一区| 91免费版在线看| 久久男人资源站| а天堂中文最新一区二区三区| 亚洲精品国产精品国自产观看浪潮| 在线播放av网址| 清纯唯美综合亚洲| 国产成人自拍高清视频在线免费播放| 久久精品最新地址| 中文无码av一区二区三区| 99视频热这里只有精品免费| 一本二本三本亚洲码| 日本在线视频一区二区| 日韩久久精品成人| 日本少妇吞精囗交| 国产999精品久久久久久| 色撸撸在线观看| 激情小说亚洲| 视频在线一区二区| 波多野结衣亚洲色图| 狠狠色综合色综合网络| 伊人婷婷久久| 成人免费一区| 在线视频欧美日韩| 国产日韩久久久| 2020日本不卡一区二区视频| 波多野结衣家庭教师在线| 狠狠久久伊人| 91国内免费在线视频| 天天躁日日躁狠狠躁伊人| 亚洲国产视频a| 国产香蕉精品视频| 欧美日韩国产成人精品| 成人免费在线看片| 后进极品白嫩翘臀在线播放| 日韩女优制服丝袜电影| 久久久久久久中文字幕| 成人中文字幕电影| 亚洲中文字幕无码av永久| 日本一区二区免费视频| www.亚洲一二| 久久久久亚洲精品| 色婷婷av一区二区三区之e本道| 亚洲一区二区三区四区五区中文| 69亚洲乱人伦| 免播放器亚洲| 性欧美精品一区二区三区在线播放| 欧美国产日韩电影| www.欧美精品| 亚洲第一视频在线| 黄色一区二区在线观看| 泷泽萝拉在线播放| 婷婷成人基地| 91色在线观看| 91桃色在线观看| 亚洲美女av网站| 中文字字幕在线观看| 亚洲私人影院在线观看| 在线播放av网址| 香蕉久久国产| 欧美爱爱视频网站| 懂色av一区二区| 国产精品99导航| caopo在线| 日韩精品电影网| 一级特黄aa大片| 亚洲午夜三级在线| 中文字幕第20页| 国精产品一区一区三区mba桃花| 搞av.com| 欧美电影《轻佻寡妇》| 17婷婷久久www| 最新国产在线观看| 日韩精品一区在线观看| 国产成人无码一区二区在线播放| 国产精品久久99| 日韩精品人妻中文字幕有码| 青青草国产成人99久久| 麻豆映画在线观看| 国产精品三级| 国产成人亚洲欧美| 91国内外精品自在线播放| 欧美日本在线视频中文字字幕| 麻豆影视在线| 日韩网站在线看片你懂的| 日韩在线播放中文字幕| 玉米视频成人免费看| 公侵犯人妻一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 国产精品va无码一区二区| 午夜久久免费观看| 国产欧美精品一区二区三区介绍| 手机在线免费观看av| 亚洲色图欧美制服丝袜另类第一页| 国产美女精品视频国产| 色婷婷综合久久久久中文一区二区| 国产日韩欧美在线观看视频| 久久免费精品国产久精品久久久久| 在线观看视频在线观看| 日本免费新一区视频 | 欧美电影《轻佻寡妇》| 国内精品一区二区| 久久精品九色| 国产日韩欧美视频| 精品成人av| 2019av中文字幕| 美洲精品一卡2卡三卡4卡四卡| 色av中文字幕一区| 国际av在线| 一本色道久久综合狠狠躁的推荐| 日韩黄色免费观看| 国产精品不卡视频| 国产又黄又粗视频| 久久精品无码一区二区三区| 欧美日韩在线成人| 亚洲精品在线二区| 欧洲av一区| 色狠狠久久av综合| 国产在线精品一区二区三区| 香蕉大人久久国产成人av| 国产综合福利在线| 日本一区二区三区中文字幕| 国产精品99久久久久久久久久久久| 久草在线资源站手机版| 午夜精品久久久久久久白皮肤 | 中文字幕22页| 日本中文字幕一区二区视频| 日韩在线xxx| 国产农村妇女毛片精品久久莱园子 | 久久久久久综合网| 激情欧美一区二区三区在线观看| 中文字幕 91| 美女任你摸久久| 一区二区免费av| 韩国女主播成人在线观看| 中文字幕丰满乱码| 国产一区二区网址| 黑人无套内谢中国美女| 国产aⅴ精品一区二区三区色成熟| 91香蕉视频在线观看视频| 国产精品系列在线播放| 欧美一级大片免费看| 成人免费福利片| 少妇精品一区二区| 毛片不卡一区二区| 日本高清久久久| 国产毛片精品视频| 中文字幕视频观看| 久久久美女毛片| 精品成人无码一区二区三区| 国产精品久久久久久久蜜臀| 日本护士做爰视频| 91免费看`日韩一区二区| 亚洲国产日韩一区无码精品久久久| 中文字幕高清一区| 欧美做爰啪啪xxxⅹ性| 亚洲激情成人在线| 国产成人亚洲精品自产在线| 色婷婷久久久综合中文字幕| 夜夜躁很很躁日日躁麻豆| 日韩欧美国产一区二区在线播放| 欧美自拍偷拍第一页| 国产一区二区三区直播精品电影| 免费国产羞羞网站视频| 亚洲美女精品久久| 最新真实国产在线视频| 欧美精品成人在线| 性欧美gay| 成人免费视频观看视频| 国产一区二区三区站长工具| 永久免费看av| 男女av一区三区二区色多| 国产成人在线综合| 91在线视频观看| jjzzjjzz欧美69巨大| 久久久久久久综合日本| 尤物在线免费视频| 福利视频导航一区| 国产欧美日韩成人| 日韩美女av在线| 怡红院红怡院欧美aⅴ怡春院| 日本久久久久久久| 亚洲精品一区二区三区中文字幕 | 欧美国产美女| 久久综合九色综合88i| 久久97超碰国产精品超碰| 午夜视频在线观看国产| 日韩理论片网站| 人人草在线观看| 亚洲福利视频在线| 久久99精品久久久久久野外| 中文字幕欧美国内| av中文字幕在线看| 91视频88av| 欧美日韩国产高清电影| 99在线免费视频观看| 久久机这里只有精品| 国产精品无码一区二区三区免费| 亚洲视频一区二区在线观看| 婷婷激情五月综合| 亚洲国产中文字幕在线观看| a级影片在线| 国产精品爽爽爽| 蜜桃一区二区三区| 水蜜桃色314在线观看| 国精产品一区一区三区mba桃花| 欧美 日韩 国产 成人 在线观看 | www.爱色av.com| 懂色av一区二区三区免费看| 手机av在线看| 欧美日韩一区二区三区不卡| 神马久久高清| 97精品免费视频| 波多野结衣在线一区二区| 老汉色影院首页| 黑人精品欧美一区二区蜜桃| 国产传媒在线看| 欧美视频你懂的| 瑟瑟在线观看| 欧美又大又粗又长| 欧美日韩麻豆| 日韩精品一区二区三区久久| www.日韩在线| 圆产精品久久久久久久久久久| 亚洲白虎美女被爆操| 高清电影在线免费观看| 高清国产在线一区| 国产精品大片免费观看| 欧美图片自拍偷拍| 亚洲一级电影视频| 狠狠综合久久av一区二区| 欧美高清无遮挡| 99久久免费精品国产72精品九九| 菠萝蜜视频在线观看入口| 国产精品一二三在| 久久一区二区三| 亚洲国产欧美自拍| 中文字幕乱码中文乱码51精品| 久久99精品国产99久久| 亚洲综合国产| 亚洲女优在线观看| 欧美日韩在线免费视频| 韩国av网站在线| dy888夜精品国产专区| 黄色成人精品网站| 国产伦精品一区二区三区妓女| 一本大道久久a久久综合| 国产毛片在线看| 欧美精品激情视频| 国产乱人伦丫前精品视频| 精品这里只有精品| 久久九九国产精品| 91精品国产乱码久久久久| 欧美精品免费看| 鲁大师精品99久久久| 日本精品久久久久中文字幕| 中文字幕欧美三区| www.久久精品.com| 青草青草久热精品视频在线观看| 精品美女久久久| www.桃色.com| 狠狠爱在线视频一区| 高清国产福利在线观看| 亚洲精品免费在线视频| 99成人在线| 青青青视频在线免费观看| 日韩一区二区免费视频| av免费在线视| 色乱码一区二区三在线看| 国产麻豆9l精品三级站| av资源免费观看| 日韩欧美久久一区| 色戒汤唯在线| 中文字幕中文字幕99| 成人18精品视频| 中文字幕第三页| 久久久久久久国产| 成人在线亚洲| 漂亮人妻被黑人久久精品| 欧美日韩一二三区| xxxx在线视频| 中文字幕乱码一区二区三区| 成人激情文学综合网|