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

Java編程內功-數據結構與算法「樹」

開發(fā) 后端 算法
本片繼續(xù)給大家介紹關于Java編程數據結構與算法的相關內容,今天主要介紹樹這種結構。

[[388287]]

 為什么需要樹這種結構

1.數組存儲方式分析:

  • 優(yōu)點:通過下標方式訪問元素,速度快。對于有序數組,還可以使用二分查找提高檢索速度。
  • 缺點:如果檢索某個具體的值,或者插入值(按一定的順序)會整體移動,效率較低。

2.鏈式存儲方式分析:

  • 優(yōu)點:在一定程度上對數組存儲方式優(yōu)化(比如:插入一個數值節(jié)點,只需要將插入節(jié)點,鏈接到鏈表中即可,刪除效率很高)。
  • 缺點:在進行檢索時,效率仍然很低,需要從頭結點開始遍歷。

3.樹存儲方式分析:能提高數據存儲,讀取的效率,比如利用二叉排序樹(Binary sort tree),即可以保證數據的檢索速度,同時也可以保證數據的插入、刪除、修改的速度。假設一組[7,3,10,1,5,9,12]以樹的方式存儲,分析如下圖:


二叉樹的前序遍歷、中序遍歷、后序遍歷

  • 前序遍歷:輸出父節(jié)點、輸出左邊節(jié)點、輸出右邊節(jié)點;
  • 中序遍歷:輸出左邊節(jié)點、輸出父節(jié)點、輸出右邊節(jié)點;
  • 后序遍歷:輸出左邊節(jié)點、輸出右邊節(jié)點、輸出父節(jié)點;

需求案例

完成一個如下二叉樹節(jié)點存儲、前序遍歷搜索、中序遍歷搜索、后序遍歷搜索和刪除節(jié)點功能。

對于刪除節(jié)點要求如下:

  1. 如果刪除的節(jié)點是葉子節(jié)點,則刪除該節(jié)點。
  2. 如果刪除的節(jié)點是非葉子節(jié)點,則刪除該樹。
  3. 測試,刪除5號葉子節(jié)點和3號子樹。

代碼案例

  1. package com.xie.tree; 
  2.  
  3. public class BinaryTreeDemo { 
  4.  
  5.     public static void main(String[] args) { 
  6.         BinaryTree binaryTree = new BinaryTree(); 
  7.  
  8.         HeroNode root = new HeroNode(1, "宋江"); 
  9.         HeroNode node2 = new HeroNode(2, "吳用"); 
  10.         HeroNode node3 = new HeroNode(3, "盧俊義"); 
  11.         HeroNode node4 = new HeroNode(4, "林沖"); 
  12.         HeroNode node5 = new HeroNode(5, "關勝"); 
  13.  
  14.         //先手動創(chuàng)建該二叉樹,后面用遞歸方式 
  15.         root.setLeft(node2); 
  16.         root.setRight(node3); 
  17.         node3.setRight(node4); 
  18.         node3.setLeft(node5); 
  19.  
  20.         binaryTree.setRoot(root); 
  21.  
  22.         //前序遍歷 
  23.         System.out.println("前序遍歷"); 
  24.         binaryTree.preOrder(); 
  25.  
  26.         //中序遍歷 
  27.         System.out.println("中序遍歷"); 
  28.         binaryTree.infixOrder(); 
  29.  
  30.         //后續(xù)遍歷 
  31.         System.out.println("后續(xù)遍歷"); 
  32.         binaryTree.postOrder(); 
  33.  
  34.         //前序遍歷查找 
  35.         System.out.println("前序遍歷查找~~"); 
  36.         HeroNode resultNode = binaryTree.preOrderSearch(5); 
  37.         if (resultNode != null) { 
  38.             System.out.printf("找到了,信息為no=%d,name=%s\n", resultNode.getNo(), resultNode.getName()); 
  39.             System.out.println("遍歷次數:" + HeroNode.preCount); 
  40.         } else { 
  41.             System.out.println("沒有找到"); 
  42.         } 
  43.  
  44.         //中序遍歷查找 
  45.         System.out.println("中序遍歷查找~~"); 
  46.         HeroNode resultNode1 = binaryTree.infixOrderSearch(5); 
  47.         if (resultNode1 != null) { 
  48.             System.out.printf("找到了,信息為no=%d,name=%s\n", resultNode1.getNo(), resultNode1.getName()); 
  49.             System.out.println("遍歷次數:" + HeroNode.infoxCount); 
  50.         } else { 
  51.             System.out.println("沒有找到"); 
  52.         } 
  53.  
  54.         //后序遍歷查找 
  55.         System.out.println("后序遍歷查找~~"); 
  56.         HeroNode resultNode2 = binaryTree.postOrderSearch(5); 
  57.         if (resultNode2 != null) { 
  58.             System.out.printf("找到了,信息為no=%d,name=%s\n", resultNode2.getNo(), resultNode2.getName()); 
  59.             System.out.println("遍歷次數:" + HeroNode.postCount); 
  60.         } else { 
  61.             System.out.println("沒有找到"); 
  62.         } 
  63.  
  64.         System.out.println("刪除3號節(jié)點"); 
  65.         binaryTree.delNo(3); 
  66.         System.out.println("刪除后的節(jié)點"); 
  67.         binaryTree.preOrder(); 
  68.         /** 
  69.          * 前序遍歷 
  70.          * HeroNode{no=1, name=宋江} 
  71.          * HeroNode{no=2, name=吳用} 
  72.          * HeroNode{no=3, name=盧俊義} 
  73.          * HeroNode{no=5, name=關勝} 
  74.          * HeroNode{no=4, name=林沖} 
  75.          * 中序遍歷 
  76.          * HeroNode{no=2, name=吳用} 
  77.          * HeroNode{no=1, name=宋江} 
  78.          * HeroNode{no=5, name=關勝} 
  79.          * HeroNode{no=3, name=盧俊義} 
  80.          * HeroNode{no=4, name=林沖} 
  81.          * 后續(xù)遍歷 
  82.          * HeroNode{no=2, name=吳用} 
  83.          * HeroNode{no=5, name=關勝} 
  84.          * HeroNode{no=4, name=林沖} 
  85.          * HeroNode{no=3, name=盧俊義} 
  86.          * HeroNode{no=1, name=宋江} 
  87.          * 前序遍歷查找~~ 
  88.          * 找到了,信息為no=5,name=關勝 
  89.          * 遍歷次數:4 
  90.          * 中序遍歷查找~~ 
  91.          * 找到了,信息為no=5,name=關勝 
  92.          * 遍歷次數:3 
  93.          * 后序遍歷查找~~ 
  94.          * 找到了,信息為no=5,name=關勝 
  95.          * 遍歷次數:2 
  96.          * 刪除3號節(jié)點 
  97.          * 刪除后的節(jié)點 
  98.          * HeroNode{no=1, name=宋江} 
  99.          * HeroNode{no=2, name=吳用} 
  100.          */ 
  101.     } 
  102.  
  103. class BinaryTree { 
  104.     private HeroNode root; 
  105.  
  106.     public void setRoot(HeroNode root) { 
  107.         this.root = root; 
  108.     } 
  109.  
  110.     //前序遍歷 
  111.     public void preOrder() { 
  112.         if (this.root != null) { 
  113.             this.root.preOrder(); 
  114.         } 
  115.     } 
  116.  
  117.     //中序遍歷 
  118.     public void infixOrder() { 
  119.         if (this.root != null) { 
  120.             this.root.infixOrder(); 
  121.         } 
  122.     } 
  123.  
  124.     //刪除節(jié)點 
  125.     public void delNo(int no) { 
  126.         if (this.root != null) { 
  127.             if (this.root.getNo() == no) { 
  128.                 this.root = null
  129.             } else { 
  130.                 this.root.delNo(no); 
  131.             } 
  132.         } 
  133.         return
  134.     } 
  135.  
  136.     //后序遍歷 
  137.     public void postOrder() { 
  138.         if (this.root != null) { 
  139.             this.root.postOrder(); 
  140.         } 
  141.     } 
  142.  
  143.     //前序遍歷查找 
  144.     public HeroNode preOrderSearch(int no) { 
  145.         if (root != null) { 
  146.             return root.preOrderSearch(no); 
  147.         } else { 
  148.             return null
  149.         } 
  150.     } 
  151.  
  152.     //中序遍歷查找 
  153.     public HeroNode infixOrderSearch(int no) { 
  154.         if (root != null) { 
  155.             return root.infixOrderSearch(no); 
  156.         } else { 
  157.             return null
  158.         } 
  159.     } 
  160.  
  161.     //后序遍歷查找 
  162.     public HeroNode postOrderSearch(int no) { 
  163.         if (root != null) { 
  164.             return root.postOrderSearch(no); 
  165.         } else { 
  166.             return null
  167.         } 
  168.     } 
  169.  
  170. class HeroNode { 
  171.     static int preCount = 0; 
  172.     static int infoxCount = 0; 
  173.     static int postCount = 0; 
  174.  
  175.     private int no
  176.     private String name
  177.     private HeroNode left
  178.     private HeroNode right
  179.  
  180.     public HeroNode(int no, String name) { 
  181.         this.no = no
  182.         this.name = name
  183.     } 
  184.  
  185.     public int getNo() { 
  186.         return no
  187.     } 
  188.  
  189.     public void setNo(int no) { 
  190.         this.no = no
  191.     } 
  192.  
  193.     public String getName() { 
  194.         return name
  195.     } 
  196.  
  197.     public void setName(String name) { 
  198.         this.name = name
  199.     } 
  200.  
  201.     public HeroNode getLeft() { 
  202.         return left
  203.     } 
  204.  
  205.     public void setLeft(HeroNode left) { 
  206.         this.left = left
  207.     } 
  208.  
  209.     public HeroNode getRight() { 
  210.         return right
  211.     } 
  212.  
  213.     public void setRight(HeroNode right) { 
  214.         this.right = right
  215.     } 
  216.  
  217.     @Override 
  218.     public String toString() { 
  219.         return "HeroNode{" + 
  220.                 "no=" + no + 
  221.                 ", name=" + name + 
  222.                 '}'
  223.     } 
  224.  
  225.     //前序遍歷 
  226.     public void preOrder() { 
  227.         System.out.println(this); 
  228.         //遞歸向左子樹前序遍歷 
  229.         if (this.left != null) { 
  230.             this.left.preOrder(); 
  231.         } 
  232.  
  233.         //遞歸向右子樹前序遍歷 
  234.         if (this.right != null) { 
  235.             this.right.preOrder(); 
  236.         } 
  237.     } 
  238.  
  239.     //中序遍歷 
  240.     public void infixOrder() { 
  241.         //遞歸向左子樹中序遍歷 
  242.         if (this.left != null) { 
  243.             this.left.infixOrder(); 
  244.         } 
  245.         System.out.println(this); 
  246.         //遞歸向右子樹中序遍歷 
  247.         if (this.right != null) { 
  248.             this.right.infixOrder(); 
  249.         } 
  250.     } 
  251.  
  252.     //后序遍歷 
  253.     public void postOrder() { 
  254.         //遞歸向左子樹后序遍歷 
  255.         if (this.left != null) { 
  256.             this.left.postOrder(); 
  257.         } 
  258.         //遞歸向右子樹后序遍歷 
  259.         if (this.right != null) { 
  260.             this.right.postOrder(); 
  261.         } 
  262.         System.out.println(this); 
  263.     } 
  264.  
  265.     //遞歸刪除節(jié)點 
  266.     //1.如果刪除的節(jié)點是葉子節(jié)點,則刪除該節(jié)點。 
  267.     //2.如果刪除的節(jié)點是非葉子節(jié)點,則刪除該樹。 
  268.     public void delNo(int no) { 
  269.         /** 
  270.          * 1.因為我們的二叉樹是單向的,所以我們是判斷當前節(jié)點的子節(jié)點是否是需要刪除的節(jié)點,而不能去判斷當前節(jié)點是否是需要刪除的節(jié)點。 
  271.          * 2.如果當前節(jié)點的左子節(jié)點不為空,并且左子節(jié)點就是需要刪除的節(jié)點,就將this.left = null;并且返回(結束遞歸)。 
  272.          * 3.如果當前節(jié)點的右子節(jié)點不為空,并且右子節(jié)點就是需要刪除的節(jié)點,將將this.right = null;并且返回(結束遞歸)。 
  273.          * 4.如果第2步和第3步沒有刪除節(jié)點,那么就要向左子樹進行遞歸刪除。 
  274.          * 5.如果第4步也沒有刪除節(jié)點,則應當向右子樹進行遞歸刪除。 
  275.          */ 
  276.         if (this.left != null && this.left.no == no) { 
  277.             this.left = null
  278.             return
  279.         } 
  280.  
  281.         if (this.right != null && this.right.no == no) { 
  282.             this.right = null
  283.             return
  284.         } 
  285.  
  286.         if (this.left != null) { 
  287.             this.left.delNo(no); 
  288.         } 
  289.  
  290.         if (this.right != null) { 
  291.             this.right.delNo(no); 
  292.         } 
  293.  
  294.     } 
  295.  
  296.     //前序遍歷查找 
  297.     public HeroNode preOrderSearch(int no) { 
  298.  
  299.         HeroNode res = null
  300.  
  301.         preCount++;//這里必須放在this.no == no 判斷之前,才進行實際的比較 
  302.         //若果找到,就返回 
  303.         if (this.no == no) { 
  304.             return this; 
  305.         } 
  306.         //沒有找到,向左子樹遞歸進行前序查找 
  307.         if (this.left != null) { 
  308.             res = this.left.preOrderSearch(no); 
  309.         } 
  310.         //如果res != null 就直接返回 
  311.         if (res != null) { 
  312.             return res; 
  313.         } 
  314.         //如果左子樹沒有找打,向右子樹進行前序查找 
  315.         if (this.right != null) { 
  316.             res = this.right.preOrderSearch(no); 
  317.         } 
  318.         //如果找到就返回 
  319.         if (res != null) { 
  320.             return res; 
  321.         } 
  322.         return res; 
  323.     } 
  324.  
  325.     //中序遍歷查找 
  326.     public HeroNode infixOrderSearch(int no) { 
  327.  
  328.         HeroNode res = null
  329.         if (this.left != null) { 
  330.             res = this.left.infixOrderSearch(no); 
  331.         } 
  332.         if (res != null) { 
  333.             return res; 
  334.         } 
  335.         infoxCount++;//這里必須放在this.no == no 判斷之前,才進行實際的比較 
  336.         if (this.no == no) { 
  337.             return this; 
  338.         } 
  339.         if (this.right != null) { 
  340.             res = this.right.infixOrderSearch(no); 
  341.         } 
  342.         if (res != null) { 
  343.             return res; 
  344.         } 
  345.         return res; 
  346.     } 
  347.  
  348.     //后序遍歷查找 
  349.     public HeroNode postOrderSearch(int no) { 
  350.  
  351.         HeroNode res = null
  352.         if (this.left != null) { 
  353.             res = this.left.postOrderSearch(no); 
  354.         } 
  355.         if (res != null) { 
  356.             return res; 
  357.         } 
  358.  
  359.         if (this.right != null) { 
  360.             res = this.right.postOrderSearch(no); 
  361.         } 
  362.         if (res != null) { 
  363.             return res; 
  364.         } 
  365.         postCount++;//這里必須放在this.no == no 判斷之前,才進行實際的比較 
  366.         if (this.no == no) { 
  367.             return this; 
  368.         } 
  369.         return res; 
  370.     } 

 【編輯推薦】

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-04-07 09:26:37

Java數據結構算法

2021-03-24 10:41:04

Java數據結構算法

2021-03-09 06:30:32

JAVA數據結構算法

2021-04-13 09:37:41

Java數據結構算法

2021-05-12 09:07:09

Java數據結構算法

2021-03-10 08:42:19

Java數據結構算法

2021-03-17 09:27:36

Java數據結構算法

2021-03-08 06:28:57

JAVA數據結構與算法稀疏數組

2021-03-23 08:33:22

Java數據結構算法

2021-03-26 08:40:28

Java數據結構算法

2021-03-12 09:13:47

Java數據結構算法

2021-03-29 10:13:47

Java編程數據結構算法

2021-03-19 10:25:12

Java數據結構算法

2021-04-01 10:34:18

Java編程數據結構算法

2021-04-15 09:36:44

Java數據結構算法

2021-04-22 10:07:45

Java數據結構算法

2021-03-14 08:27:40

Java數據結構算法

2021-04-16 09:40:52

Java數據結構算法

2021-03-22 09:00:22

Java數據結構算法

2021-05-13 07:34:56

Java數據結構算法
點贊
收藏

51CTO技術棧公眾號

www.youjizz.com亚洲| 亚洲综合激情视频| 国产福利片在线| 蜜桃91丨九色丨蝌蚪91桃色| xxx成人少妇69| 人妻体体内射精一区二区| av漫画网站在线观看| 91美女蜜桃在线| 国产在线高清精品| 国产对白videos麻豆高潮| 国产精品欧美三级在线观看| 欧美日韩电影一区| 国产肉体ⅹxxx137大胆| 人人九九精品| 国产成人精品免费网站| 国产精品99久久久久久久久久久久 | 一级片在线观看免费| 日韩精品1区| 亚洲国产欧美一区二区丝袜黑人| 日韩久久久久久久| 国产高清第一页| 欧美综合国产| 成年无码av片在线| 中字幕一区二区三区乱码| 日韩三级一区| 欧美三级xxx| avav在线播放| 国产日产一区二区三区| 久久久久久久国产精品影院| 91免费版黄色| 久久国产香蕉视频| 一本久久综合| 欧美老女人在线视频| 免费看黄色三级| 亚洲精品进入| 亚洲精品一区二区三区蜜桃下载| 我的公把我弄高潮了视频| 免费av在线播放| 久久精品人人做人人爽人人| 99热99热| 国内精品偷拍视频| 国产专区综合网| 国产精品男女猛烈高潮激情| 91看片在线播放| 欧美性久久久| 欧美成人精品xxx| 538精品视频| 亚洲黄页在线观看| 日韩成人av免费| 好操啊在线观看免费视频| 国产日本一区二区| 明星裸体视频一区二区| 五月激情婷婷综合| 99视频在线精品| 精品国产一二| 无码国产精品一区二区免费16 | 亚洲欧美日韩不卡| av中文字幕在线| 国产欧美日韩卡一| 日本高清不卡三区| 黄色电影免费在线看| 久久日韩精品一区二区五区| 国产成人av一区二区三区| 国产极品久久久| 从欧美一区二区三区| 91手机在线播放| 国产 欧美 精品| 成人av资源站| 欧美大香线蕉线伊人久久国产精品| 成人免费毛片视频| 日本不卡一二三区黄网| 国产精品视频久久久| 中文字幕在线观看第二页| 久久激情综合网| 91在线直播亚洲| 蜜桃视频污在线观看| av电影一区二区| 欧美久久在线| 老司机在线看片网av| 亚洲视频香蕉人妖| 色欲色香天天天综合网www| 欧美激情网站| 欧美在线免费视屏| 下面一进一出好爽视频| 粉嫩av一区二区| 日韩电影中文字幕一区| 国产7777777| 影视一区二区| 欧美孕妇毛茸茸xxxx| 伊人网免费视频| 国产成人在线网站| 欧美日韩在线观看一区| 黄色网在线播放| 婷婷国产在线综合| 亚洲黄色小视频在线观看| 麻豆一二三区精品蜜桃| 日韩成人中文字幕| 国产成人免费在线观看视频| 国产精品www994| 日韩免费中文字幕| 亚洲第一色网站| 国产亚洲美州欧州综合国| av中文字幕av| 欧美日韩123区| 欧美一区二区免费视频| 无码人妻aⅴ一区二区三区| 99精品美女| 欧美亚洲另类制服自拍| 97在线播放免费观看| 91视频观看免费| 黄色www在线观看| 波多视频一区| 精品国产1区二区| 久久精品在线观看视频| 国产精品久久久亚洲一区| 91在线播放国产| 噜噜噜噜噜在线视频| 亚洲综合清纯丝袜自拍| 视频二区在线播放| 欧美a大片欧美片| 美日韩精品视频免费看| 日本视频www色| 91免费小视频| 欧美图片激情小说| 国产精品3区| 色吧影院999| 神马久久久久久久| 91视频观看视频| 无码粉嫩虎白一线天在线观看 | 亚洲欧美中日韩| av免费中文字幕| 国产极品模特精品一二| 欧美成人中文字幕在线| 亚洲一区二区三区网站| 久久久不卡影院| av动漫在线观看| 极品束缚调教一区二区网站 | 日本免费福利视频| 国产精品v一区二区三区| 亚洲最大福利网站| 欧美18hd| 天堂中文а√在线| 日韩毛片视频在线看| 日韩精品一区中文字幕| 日韩大尺度在线观看| 国模私拍一区二区三区| 精品国产一级片| 一区二区三区四区不卡视频| 亚洲高清在线不卡| 亚洲在线久久| 亚洲一区美女视频在线观看免费| 国产a级免费视频| 国产精品女主播av| 成 人 黄 色 小说网站 s色| 大片网站久久| 国产精品一区二区三区毛片淫片| 午夜美女福利视频| 亚洲综合成人网| 黄色av电影网站| 在线精品一区| 久久久www免费人成黑人精品| 成人免费在线观看| 欧美在线观看一区| 成人午夜免费影院| 经典一区二区三区| 日本xxxxx18| 涩涩屋成人免费视频软件| 欧美精品免费在线观看| 成人午夜免费在线观看| 婷婷久久综合九色综合绿巨人| 性生活免费在线观看| 四虎国产精品免费观看| 成人激情视频在线观看| 色噜噜狠狠狠综合欧洲色8| 精品一区二区免费在线观看| 伊人久久五月天| 亚洲午夜在线播放| 亚洲人成精品久久久久| 韩国三级在线看| 一区二区毛片| 亚洲精品国产精品国自产| 亚洲日本免费电影| 久久免费在线观看| 国产大学生校花援交在线播放| 亚洲免费观看高清在线观看| 国产探花一区二区三区| 日韩一级精品| 一区二区三区四区在线视频 | 久久久天堂国产精品女人| 人妻va精品va欧美va| 色综合咪咪久久| 少妇av片在线观看| 国产成人综合亚洲91猫咪| 久久国产亚洲精品无码| 水蜜桃久久夜色精品一区| 国产91aaa| 天堂久久午夜av| 欧美日韩成人精品| 毛片免费在线观看| 欧美刺激午夜性久久久久久久| 国产精品99久久久久久成人| 成人av在线播放网址| 中文字幕第88页| 欧美三级特黄| 亚洲激情啪啪| 老司机精品在线| 91免费版网站入口| 色尼玛亚洲综合影院| 欧美精品在线视频观看| 国产视频精选在线| 亚洲国产精品va在看黑人| 国产精品国产av| 色琪琪一区二区三区亚洲区| 国产一级一级片| 亚洲欧洲精品一区二区精品久久久 | 成人三级视频在线观看一区二区| 二区三区在线观看| 亚洲偷熟乱区亚洲香蕉av| 亚洲精品国偷拍自产在线观看蜜桃| 日韩理论片在线| 午夜精产品一区二区在线观看的| 久久综合九色| 妺妺窝人体色777777| 国产精品国内免费一区二区三区| 国产一区香蕉久久| 国产精品极品美女在线观看| 国外成人在线直播| 尤物视频在线看| 久久久www成人免费精品张筱雨| 国产麻豆精品一区| 欧美日韩国产高清一区二区三区| 成年人二级毛片| 国产精品色眯眯| 婷婷色一区二区三区| 91蜜桃在线观看| 无码一区二区精品| 成人高清视频在线观看| 无码人妻久久一区二区三区蜜桃| 99香蕉国产精品偷在线观看 | 久久人体视频| 日韩美女一区| 国内精品久久久久久久久电影网| 成人黄色免费在线观看| 日韩制服诱惑| 国产精品久久久久久搜索| 欧美激情喷水| 国产精品va在线| 精品成人av| 国产精品国产三级国产专播精品人| 日本三级视频在线播放| 国产亚洲成av人片在线观看桃| 国产免费视频一区二区三区| 欧美日韩久久久一区| 中文字幕在线视频第一页| 欧美伊人精品成人久久综合97| 欧美性x x x| 有码一区二区三区| 福利一区二区三区四区| 午夜精品久久久久久不卡8050| 国产视频三区四区| 国产精品色在线观看| 国产精品视频一区二区在线观看| 成人动漫精品一区二区| 无码成人精品区在线观看| 成人免费视频app| 成人免费av片| 国产日韩三级在线| 开心激情五月网| 亚洲综合色区另类av| 日韩乱码人妻无码中文字幕| 欧美日韩国产中文字幕| 精品久久久久久久久久久久久久久久 | 老**午夜毛片一区二区三区 | 第四色在线视频| 99久久777色| 亚洲精品国产熟女久久久| 国产精品久久久久一区二区三区共 | 亚洲欧美日韩精品| 国产69久久| 欧美成人久久久| 黄色aa久久| 国产精品劲爆视频| 国产在线视频欧美一区| 国语精品中文字幕| 欧美日韩久久精品| 日韩中文在线字幕| 国产模特精品视频久久久久| 国产一级特黄a大片免费| 国产老肥熟一区二区三区| 日韩精品人妻中文字幕有码| 久久久久久久久一| 国产suv精品一区二区68| 精品女厕一区二区三区| 亚洲天堂777| 亚洲精品国精品久久99热一| jizz视频在线观看| 欧美精品videosex性欧美| 日本高清不卡一区二区三区视频| 欧美伊久线香蕉线新在线| 成人国产综合| 国产精品久久亚洲7777| 蜜桃一区二区| 91视频 - 88av| 日韩av网站在线观看| 一级少妇精品久久久久久久| 国产精品丝袜黑色高跟| 日本一区二区三区免费视频| 欧美日韩aaaaaa| 你懂的在线视频| 欧美精品福利在线| 亚洲精品自拍| 日韩啊v在线| 99av国产精品欲麻豆| 天堂av2020| 日本一区二区三区在线观看| 国产精品成人网站| 欧美一区二区三区电影| av在线电影院| 欧美中文字幕在线视频| 91午夜精品| 欧美 日韩 国产 在线观看| 日韩成人伦理电影在线观看| 污污污www精品国产网站| 一区二区理论电影在线观看| 亚洲一二区视频| 在线播放精品一区二区三区 | 中文字幕在线一区| 五月天婷婷久久| 亚洲第一免费播放区| gogogogo高清视频在线| 国产欧美一区二区三区在线| 精品在线99| 国产性xxxx18免费观看视频| 成人精品视频一区二区三区 | 亚洲乱码国产乱码精品精的特点 | 成人网址在线观看| 精品国产91| 日本va中文字幕| 91免费视频观看| 国产专区第一页| 亚洲乱码一区av黑人高潮| 蜜臀久久精品| 狠狠色综合网站久久久久久久| 欧美日韩有码| 成人免费xxxxx在线视频| 久久久久久亚洲综合| 神马久久久久久久| 中文字幕精品www乱入免费视频| jizz性欧美10| 亚洲一区二区三区久久 | 丝袜美腿玉足3d专区一区| 亚洲一区二区三区免费在线观看| 毛片毛片毛片毛| 综合精品久久久| av中文字幕第一页| 欧美激情高清视频| 久久中文资源| 人妻少妇被粗大爽9797pw| 国产亚洲美州欧州综合国| 91porny九色| www.美女亚洲精品| 九色精品蝌蚪| 国产无限制自拍| 2024国产精品| 伊人久久国产精品| 欧美伦理91i| 亚洲裸色大胆大尺寸艺术写真| 操bbb操bbb| 国产69精品一区二区亚洲孕妇| 中文字幕在线观看二区| 欧美麻豆精品久久久久久| a黄色片在线观看| 国产一区高清视频| 日韩在线a电影| 国产精品白丝喷水在线观看| 精品国产免费一区二区三区四区| 在线观看黄av| 91|九色|视频| 99热在线精品观看| 久久久久99精品成人| 日韩精品一区二区三区视频播放 | 国产精品久久久久久久久久久久久久久久久久 | 欧美激情二区| 成人黄色片视频网站| 久久久蜜桃一区二区人| 日本女人性生活视频| 欧美mv日韩mv亚洲| 日韩经典一区| 999久久欧美人妻一区二区| 久久综合久久鬼色中文字| 亚洲天堂自拍偷拍| 国精产品一区一区三区有限在线| 中文字幕亚洲在线观看| 欧美韩国日本在线| 中文字幕一区二区三区av| 人妻丰满熟妇av无码区hd| 国产欧美日韩视频| 99精品久久| 国产黄在线免费观看| 亚洲人av在线影院|