日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树的更多相关算法-3

發布時間:2025/3/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树的更多相关算法-3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此代碼包含了構建哈夫曼樹的代碼,在后面幾段
?

  • ?
  • //計算一個二叉樹的節點個數,可以把所有的節點入隊列,然后觀察其rear的值,就知道其節點的個數,??這是一種廣度的遍歷方法?
  • //下面的是一中深度的遍歷的方法??當節點為NULL時候,返回0,??當節點無子節點時,返回1?,?否則得話返回左右節點的總數?
  • int?Nodes(BTNode?*b)?
  • {?
  • ????int?num1?=?0,?num2?=?0;?
  • ????if(b?==?NULL)??return?0;?
  • ????else?if(b->lchild?==?NULL?&&?b->rchild?==?NULL)?return?1;?
  • ????else??
  • ????{?
  • ????????num1?=?Nodes(b->lchild);???????//此處記錄的是其左子樹的所有子節點的數目?
  • ????????num2?=?Nodes(b->rchild);??????//?此處記錄的是右子樹所有節點的數目?
  • ????????return?(num1?+?num2?+?1);?????//此處?返回其左子樹的數目+右子樹的數目+?本身的數目(也就是那個1)?
  • ????}?
  • }?
  • ?
  • void?LeafNodes(BTNode?*b,?int?&leafnum)??????//此函數記錄葉子節點的數目,?與上面的函數類似,不過因為此函數不用計數?枝節點的數目,?所以沒有num1?num2?等變量?
  • {????????????????????????????????????????????//?當其找到一個葉子節點的時候,就把葉子節點的計數器?++,???因為leafnum是?&傳參,?所以不用擔心?回代的問題?
  • ????if(b?==?NULL)?return?;?
  • ????else?if(b->lchild?==?NULL?&&?b->rchild??==?NULL)??++leafnum;?
  • ????else?
  • ????{?
  • ????????LeafNodes(b->lchild,leafnum);?
  • ????????LeafNodes(b->rchild,leafnum);?
  • ????}????
  • }?
  • ?
  • int?Nodes2(BTNode?*b)??????????????//此函數同樣是求?樹的葉子節點的數目?
  • {?
  • ????int?num1?=?0,?num2?=?0;?
  • ????if(b?==?NULL)??return?0;?
  • ????else?if(b->lchild?==?NULL?&&?b->rchild?==?NULL)?{??return?1;}?
  • ????else??
  • ????{?
  • ????????num1?=?Nodes2(b->lchild);????
  • ????????num2?=?Nodes2(b->rchild);????
  • ????????return?(num1?+?num2?);??????//此處不同的是?沒有?+?1,?產生的遞增效果就是??枝節點?不會被遞增上,?也就是說只有葉子節點才可以?對其產生作用。。。??此處加1?產生的作用是非常大的(因為遞增的原因)?
  • ????}?
  • }?
  • ?
  • void??DNodes(BTNode?*b,?int?&dnum)???????//此函數計算?有兩個子節點的?節點的個數?
  • {?
  • ????if(b?!=?NULL)????????????//當節點不為空的時候進行操作?
  • ????{?
  • ????????if(b->lchild?!=?NULL?&&?b->rchild?!=?NULL)?????//此處表示?遇到了有雙子節點的?節點?
  • ????????????++dnum;??????????????????????
  • ????????DNodes(b->lchild,dnum);???????????????????????//遍歷左子樹?
  • ????????DNodes(b->rchild,dnum);??????????????????????//遍歷右子樹??
  • ????}?
  • }?
  • ?
  • int?DNodes2(BTNode?*b)??????????????????????//此函數是求樹中?有雙子節點的節點的個數?
  • {?
  • ????int?num1?=?0,?num2?=?0,?n?=?0;?
  • ????if(b?==?NULL)?return?0;?
  • ????else?if(b->lchild?==?NULL?||?b->rchild?==?NULL)?n?=?0;????????//上面兩個表明不符合條件?把?n置為?0??
  • ????else?{?n?=?1;?}??????
  • ????num1?=?DNodes2(b->lchild);?
  • ????num2?=?DNodes2(b->rchild);?
  • ????return?(num2?+?num1?+?n);???????????????????????????//由題意知,?n的值只能為?0?或?1?
  • }?
  • ?
  • void??DNodes3(BTNode?*b,?int?&dnum)?????????//此函數也是求?一個樹中有多少個?雙節點?
  • {?
  • ????int?num1?=?0,?num2?=?0;?
  • ????if(b?!=?NULL)??????????????????????????//當節點不為空的時候進行?
  • ????{?
  • ????????if(b->rchild?==?NULL?||?b->lchild?==?NULL)???//當節點只有一個子節點的時候,進行遞歸操作?
  • ????????{?
  • ????????????DNodes3(b->lchild,?dnum);?
  • ????????????DNodes3(b->rchild,?dnum);?
  • ????????}else?
  • ????????{??
  • ????????????++dnum;??????????????????????????????????//當節點有兩個子節點的時候,?把計數器++,??然后繼續執行遞歸操作?
  • ????????????DNodes3(b->lchild,?dnum);?
  • ????????????DNodes3(b->rchild,?dnum);?
  • ????????}?
  • ????}?
  • }?
  • ?
  • ?
  • ?
  • void??DelTree(BTNode?*b)??//此函數用來釋放?樹中節點的所占用的空間,??釋放只能采用后序遍歷,不能使用先序或者中序遍歷,因為中有將子樹的空間釋放掉后才能釋放根節點的空間?
  • {?
  • ????if(b?!=??NULL)?
  • ????{???DelTree(b->lchild);?
  • ????????DelTree(b->rchild);???????????
  • ????????free(b);?
  • ????}?
  • }?
  • ?
  • void?Swap(BTNode?*&b)?????????//交換左右子樹??用到的還是?后序?遞歸?
  • {?
  • ????BTNode?*temp;?
  • ????if(b?!=?NULL)???????????//當節點存在的時候?進行操作?
  • ????{?
  • ????????Swap(b->lchild);?
  • ????????Swap(b->rchild);?
  • ????????temp?=?b->lchild;???????????//交換左右子樹?
  • ????????b->lchild?=?b->rchild;?
  • ????????b->rchild?=?temp;?
  • ????}?
  • }?
  • ?
  • //對樹的遞歸操作??莫過于先?遍歷左子樹,?在遍歷右子樹,?這是一個方面。?另一個方面是?先序?中序?還是后序?
  • ?
  • void?Swap1(BTNode?*b,?BTNode?*&b1)?????????????//此函數是由一個樹,重新構建得到其另外一個左右子樹交換的樹。?
  • {?
  • ????if(b?==?NULL)?
  • ????{?
  • ????????b1?=?NULL;?
  • ????}?
  • ????else?
  • ????{?
  • ????????b1?=?(BTNode?*)malloc(sizeof(BTNode));?
  • ????????b1->data?=?b->data;?
  • ????????Swap1(b->lchild,?b1->rchild);?
  • ????????Swap1(b->rchild,?b1->lchild);?
  • ????}?
  • }?
  • ?
  • void?ancestor(BTNode?*b,char?r,?char?s)???//此函數是求得?值為?r?s?節點的最近的祖先節點?
  • {???????????????????????????????????????//不是一般性本例子采用后序遍歷樹,?并且假設?r?節點在?s?節點的左邊?
  • ????BTNode?*st[MAXSIZE],??*temp,?*temp2;?//本函數的思路是,后序遍歷樹?把遇到的節點進棧(這時候入棧中的元素都是r的祖先節點),當先(因為規定r節點在s節點的左邊)遇到值為r節點的時候,就把棧的所有節點的值放入path數組,用以記錄訪問過的值?
  • ????int?top?=?-1;???????????????????????//當遇到值為s的節點時候,就比較path數組與棧中的節點值,直到第一個不同即為其共同的祖先節點(當出棧的時候把?其不是公共的節點給出去了)?
  • ????bool??flag?=?true;?
  • ????char?path[MAXSIZE];?
  • ?????
  • ????if(b?!=?NULL)????????
  • ????{?
  • ????????temp?=?b;?
  • ????????do??????//此循環是后序遍歷?
  • ????????{????????
  • ????????????while(temp?!=?NULL)????????//把左子樹遞歸進棧?
  • ????????????{?
  • ????????????????++top;?
  • ????????????????st[top]?=?temp;?
  • ????????????????temp?=?temp->lchild;?
  • ????????????}?
  • ????????????flag?=?true;??
  • ????????????temp2?=?NULL;?
  • ????????????while(flag?&&?top?>?-1)??
  • ????????????{?
  • ????????????????temp?=?st[top];?
  • ????????????????if(temp->rchild?==?temp2)?????????//當節點的右節點訪問過?或者?其右節點為空的時候,就訪問它?
  • ????????????????{????????????????????
  • ????????????????????if(temp->data?==?r)?????????//判斷節點的值是否為r?如果是就給path數組賦值?
  • ????????????????????{?
  • ????????????????????????for(int?loop1=0;?loop1?<=?top;?++loop1)?
  • ????????????????????????????path[loop1]?=?st[loop1]->data;?
  • ????????????????????????--top;???????????????????????//執行出棧操作?
  • ????????????????????????temp2?=?temp;???????????????//表示已經訪問過,,即對其做標記?
  • ????????????????????}else?if(temp->data?==?s)?
  • ????????????????????{?
  • ????????????????????????int?loop2?=?0;?
  • ????????????????????????while(st[loop2]->data?==?path[loop2])?
  • ????????????????????????????++loop2;?
  • ????????????????????????cout<<r<<"?與?"<<s<<"?,?最近的共同祖先是?:"<<path[--loop2]<<endl;?
  • ????????????????????????return?;?
  • ????????????????????}else?
  • ????????????????????{?
  • ????????????????????????--top;?
  • ????????????????????????temp2?=?temp;?
  • ????????????????????}?
  • ????????????????}else?
  • ????????????????{?
  • ????????????????????flag?=?false;?????????????????//此語句塊表示當其右子節點沒有被訪問的時候,就跳出循環用flag做標志變量,?然后對其右子樹執行遞歸操作?
  • ????????????????????temp?=?temp->rchild;?
  • ????????????????}?
  • ????????????}?
  • ????????}while(top?>?-1);?
  • ????}?
  • }?
  • char?path1[MAXSIZE];?
  • int?top?=?-1;?
  • void?AncestorPath(BTNode?*b,?char?s)?????//此函數實現的是輸出根節點到?值為?s?節點之間的路徑,采用的遞歸操作?
  • {???????????????????????????????????????//這是一種先序遍歷?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????++top;?
  • ????????path1[top]?=?b->data;??????//入棧?
  • ????????if(b->data?==?s)???????????//判斷是否滿足條件?
  • ????????{??
  • ????????????cout<<"路徑為:"<<endl;?
  • ????????????for(int?loop1?=?0;?loop1?<=?top;?++loop1)?
  • ????????????????cout<<path1[loop1]<<'?';?
  • ????????????cout<<endl;?
  • ????????????return;?
  • ????????}?
  • ????????AncestorPath(b->lchild,s);?
  • ????????AncestorPath(b->rchild,s);?
  • ????????--top;?????????????????//恢復環境?
  • ????}?
  • }?
  • //此上下兩個函數?先序?與?后序的區別是?先序是先判斷是否滿足條件在進行?遍歷左子樹,??后序則是先深度遍歷左子樹,在判斷右子樹的時候,才判斷是否滿足條件?
  • //不管怎么說都?在棧中存在的元素都是所求的元素的??祖先節點?
  • void?AncestorPath2(BTNode?*b,?char?s)????//此函數同樣是實現?根節點到值為s的節點之間路徑輸出,采用的方法是后序法,與求兩個?節點?最近的祖先節點方法類似?
  • {?
  • ????BTNode?*st[MAXSIZE],?*temp,?*temp2;?
  • ????int?top?=?-1;?
  • ????bool?flag?=?true;?
  • ????char?path[MAXSIZE];?
  • ?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????temp?=?b;?
  • ????????do?
  • ????????{?
  • ????????????while(temp?!=?NULL)?
  • ????????????{?
  • ????????????????++top;?
  • ????????????????st[top]?=?temp;?
  • ????????????????temp?=?temp->lchild;?
  • ????????????}?
  • ????????????temp2?=?NULL;?
  • ????????????flag?=?true;?
  • ????????????while(flag?&&?top?>?-1)?
  • ????????????{?
  • ????????????????temp?=?st[top];?
  • ????????????????if(temp->rchild?==?temp2)?
  • ????????????????{?
  • ????????????????????if(temp->data?==?s)?
  • ????????????????????{?
  • ????????????????????????cout<<"根節點到?"<<s<<"?之間的路徑為?:"<<endl;?
  • ????????????????????????for(int?loop1?=?0;?loop1?<=?top;?++loop1)?
  • ????????????????????????????cout<<st[loop1]->data<<'?';?
  • ????????????????????????cout<<endl;?
  • ????????????????????????return;?
  • ????????????????????}?
  • ????????????????????--top;?
  • ????????????????????temp2?=?temp;?
  • ????????????????}else?
  • ????????????????{?
  • ????????????????????flag?=?false;?
  • ????????????????????temp?=?temp->rchild;?
  • ????????????????}?
  • ????????????}?
  • ?
  • ????????}while(top?>?-1);?
  • ????}?
  • }?
  • char?path3[MAXSIZE];?
  • int?top2?=?-1;?
  • void?Link(BTNode?*b)??????????//先序找樹中的葉子節點?
  • {?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????if(b->lchild?==?NULL?&&?b->rchild?==?NULL)?
  • ????????????path3[++top2]?=?b->data;?
  • ????????else?
  • ????????{?
  • ????????????Link(b->lchild);?
  • ????????????Link(b->rchild);?
  • ????????}?
  • ????}?
  • }?
  • ?
  • void?Link2(BTNode?*b)??????????//采用中序遍歷?找葉子節點?
  • {?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????Link2(b->lchild);?
  • ????????if(b->lchild?==?NULL?&&?b->rchild?==?NULL)?
  • ????????????path3[++top2]?=?b->data;?
  • ????????Link2(b->rchild);?
  • ????}?
  • }?
  • ?
  • void?Print(BTNode?*b,int?w)?????????????//把樹向?逆時針旋轉90度打印出來?
  • {?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????Print(b->rchild,?w+5);?
  • ????????for(int?loop1?=?0;?loop1?<=?w;?++loop1)?
  • ????????????cout<<'?';?
  • ????????cout<<b->data<<endl;?
  • ????????Print(b->lchild,w+5);?
  • ????}?
  • }?
  • ?
  • float?ExpValue(BTNode?*b)??????//此函數是計算一個樹組成的表達式?
  • {?
  • ????if(b?!=?NULL)??????????????//當其不為0的時候執行操作?
  • ????{????????
  • ????????switch(b->data)?
  • ????????{?
  • ????????case?'+'?:?
  • ????????????return?ExpValue(b->lchild)?+?ExpValue(b->rchild);??break;?
  • ????????case?'-'?:?
  • ????????????return?ExpValue(b->lchild)?-?ExpValue(b->rchild);??break;?
  • ????????case?'*'?:?
  • ????????????return?ExpValue(b->lchild)?*?ExpValue(b->rchild);??break;?
  • ????????case?'/'?:?
  • ????????????return?ExpValue(b->lchild)?/?ExpValue(b->rchild);??break;?
  • ????????default?:?
  • ????????????return?b->data?-?'0';???????????//此處目前只能是各位數,如果節點的值是數的話,就直接返回?
  • ????????}?
  • ????}?
  • }?
  • ?
  • bool?bflag?=?false;??????????//左子樹的標記?
  • bool?bflag2?=?false;????????//右子樹的標記?
  • void??InorderExp(BTNode?*b)???????//此函數是通過樹求得其表達式,?思路是當節點的數據域是符號的時候,就把其與左節點的數據域比較,如果左節點的數據域是符號并且?
  • {???????????????????????????????//子節點的優先級比根節點的小,那么就輸出‘(’并把標記設置為true,??????當遍歷右子樹的時候仍然拿其與右子樹的數據域比較如果,其符號的優先級比右子樹的優先級大,?
  • ????if(b?!=?NULL)???????????????//就輸出一個‘(’然后設置標記為true?
  • ????{?
  • ?????????
  • ????????switch(b->data)?
  • ????????{?
  • ????????case?'+'?:?
  • ????????case?'-'?:?
  • ????????????InorderExp(b->lchild);????????//表示先遍歷左子樹?
  • ????????????cout<<b->data<<'?';?????????//輸出其值?
  • ????????????InorderExp(b->rchild);?break;??//遍歷右子樹?
  • ????????case?'*'?:?
  • ????????case?'/'?:???????????????//當遇到?*?/的時候就應當判斷優先級了?
  • ????????????if(b->lchild?!=?NULL)???????//此處是判斷左子樹?
  • ????????????{?
  • ????????????????if(b->lchild->data?==?'+'?||?b->lchild->data?==?'-')?
  • ????????????????{???cout<<'(';?
  • ????????????????????bflag?=?true;?
  • ????????????????}?
  • ????????????}?
  • ?
  • ????????????InorderExp(b->lchild);?
  • ?????????????
  • ????????????if(bflag)?
  • ????????????{?cout<<')';??bflag?=?false;}?
  • ?????????
  • ????????????cout<<b->data<<'?';?????????//此處才是輸出?*?或者/?的地方,也就是在?‘(’‘)’都輸出完成的時候,如果有的話?
  • ?????????????
  • ????????????if(b->rchild?!=?NULL)???????//此處判斷右子樹?
  • ????????????{?
  • ????????????????if(b->rchild->data?==?'+'?||?b->rchild->data?==?'-')?
  • ????????????????{???cout<<'(';???????????????
  • ????????????????????bflag2?=?true;?
  • ????????????????}?
  • ????????????}?
  • ????????????InorderExp(b->rchild);?
  • ?????????????
  • ????????????if(bflag2)?
  • ????????????{?cout<<')';?bflag2?=?false;?}?
  • ????????????break;?
  • ????????default?:?
  • ????????????cout<<b->data<<'?';?
  • ????????????break;?
  • ????????}?
  • ????}????
  • }?
  • ?
  • int?process(char?op1,?char?op2)?//此函數是判斷優先級?
  • {?
  • ????if(op1?!=?'+'?&&?op1?!=?'-'?&&?op1?!=?'*'?&&?op1?!=?'/')??return?-1;??
  • ????if(op2?!=?'+'?&&?op2?!=?'-'?&&?op2?!=?'*'?&&?op2?!=?'/')??return?-1;?
  • ?
  • ????if(op1?==?'+'?||?op1?==?'-')?
  • ????{?
  • ????????return?0;?
  • ????}?
  • ????if(op1?==?'*'?||?op1?==?'/')?
  • ????{?
  • ????????if(op2?==?'+'?||?op2?==?'-')?
  • ????????????return?1;?
  • ????}?
  • }?
  • ?
  • void?InorderExp2(BTNode?*b)????//此函數也是求得表達式?
  • {?
  • ????int?flag1?=?2;?
  • ????int?flag2?=?2;?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????if(b->lchild?!=?NULL)?
  • ????????{?
  • ????????????flag?=?process(b->data,b->lchild->data);?
  • ????????????if(flag?==?1)?cout<<'(';?
  • ????????????InorderExp(b->lchild);?
  • ????????????if(flag?==?1)?cout<<')';?
  • ????????}?
  • ????????cout<<b->data;?
  • ????????if(b->rchild?!=?NULL)?
  • ????????{?
  • ????????????flag2?=?process(b->data,b->rchild->data);?
  • ????????????if(flag2?==?1)?cout<<'(';?
  • ????????????InorderExp(b->rchild);?
  • ????????????if(flag2?==?1)?cout<<')';?
  • ????????}?
  • ????}?
  • }?
  • ?
  • float?value[MAXSIZE];?
  • ?
  • int?top22?=?-1;?
  • char?postExp[MAXSIZE];?
  • void?PostExp(BTNode?*b)???//此函數的目的是把樹轉換為后綴表達式,怎么轉換為后綴表達式呢????采用后序遍歷即可?
  • {???????????????????????//因為符號位總是位于雙親結點,這樣就能先把?數字位給進棧,?然后進棧符號位?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????PostExp(b->lchild);?
  • ????????PostExp(b->rchild);?
  • ????????++top22;?
  • ????????postExp[top22]?=?b->data;?
  • ????}?
  • }?
  • ?
  • void?CompValue(char?postExp[])?//此函數是為了通過后綴表達式來求得其值?
  • {???top?=?-1;?
  • ????char?ch;?
  • ????int?loop1?=?0;?
  • ????ch?=?postExp[loop1];?
  • ????float?lValue?=?0.0f,?rValue?=?0.0f,?fValue?=?0.0f;?
  • ????while(ch?!=?'\0')?
  • ????{?
  • ????????switch(ch)?
  • ????????{?
  • ????????case?'+'?:?
  • ????????????rValue?=?value[top];?
  • ????????????--top;?
  • ????????????lValue?=?value[top];?
  • ????????????fValue?=?lValue?+?rValue;?
  • ????????????value[top]?=?fValue;?
  • ????????????ch?=?postExp[++loop1];?
  • ????????????break;?
  • ????????case?'-'?:?
  • ????????????rValue?=?value[top];?
  • ????????????--top;?
  • ????????????lValue?=?value[top];?
  • ????????????fValue?=?lValue?-?rValue;?
  • ????????????value[top]?=?fValue;?
  • ????????????ch?=?postExp[++loop1];?
  • ????????????break;?
  • ????????case?'*'?:?
  • ????????????rValue?=?value[top];?
  • ????????????--top;?
  • ????????????lValue?=?value[top];?
  • ????????????fValue?=?lValue?*?rValue;?
  • ????????????value[top]?=?fValue;?
  • ????????????ch?=?postExp[++loop1];?
  • ????????????break;?
  • ????????case?'/'?:?
  • ????????????rValue?=?value[top];?
  • ????????????--top;?
  • ????????????lValue?=?value[top];?
  • ????????????if(rValue?==?0)??{?cout<<"發生除零錯誤。"<<endl;?exit(1);?}??
  • ????????????fValue?=?lValue?/?rValue;?
  • ????????????value[top]?=?fValue;?
  • ????????????ch?=?postExp[++loop1];?
  • ????????????break;?
  • ????????default?:?
  • ????????????fValue?=?float(?ch?-?'0');?????//因為數字位?是個位數,所以此處沒有進行處理?
  • ????????????++top;?
  • ????????????value[top]?=?fValue;?
  • ????????????ch?=?postExp[++loop1];?
  • ????????????break;?
  • ????????}?
  • ????}?
  • ????if(top?==?0)?
  • ????{?cout<<"所求的值為:"<<value[top]<<endl;?}?
  • ????else?
  • ????{?cout<<"求值錯誤。"<<endl;?}?
  • }?
  • ?
  • void?NodeToRoot(BTNode?*b)????//此函數是在結點中增加一個雙親域以后,?輸出每個結點到根節點的路徑?
  • {???????????????????????????//采用先序遍歷?
  • ????BTNode?*temp;?
  • ????if(b?!=?NULL)?
  • ????{?
  • ????????temp?=?b;?
  • ????????while(temp?!=?NULL)?
  • ????????{?
  • ????????????cout<<temp->data<<'?';?
  • ????????????temp?=?temp->parent;?
  • ????????}?
  • ????????cout<<endl;?
  • ????????NodeToRoot(b->lchild);?
  • ????????NodeToRoot(b->rchild);?
  • ????}?
  • }?
  • ?
  • void?PreToPost(ElemType?pre[],?int?begin1,?int?end1,?ElemType?post[],?int?begin2,?int?end2)?
  • {???????????????????????????????//此函數將先序序列轉換為后序序列,?因為先序序列的第一個元素是后序序列的最后一個元素,??然后就以此為條件進行遞歸操作?
  • ????int?half?=?0;??
  • ????if(end1?>=?begin1)?
  • ????{???half?=?(end1?-?begin1?)?/?2;???????//half保存了中間的值?
  • ????????post[end2]?=?pre[begin1];??????
  • ????????PreToPost(pre,?begin1?+?1,?begin1?+?half,?post,?begin2,begin2?+?half?-1);?//此處是遍歷先序左子樹,?要注意的是在使用half的時候,應該加上開始點,??其half是一個區間,不是一個點,加上begin開始點后,才表示中間點的位置?
  • ????????PreToPost(pre,?begin1?+?half?+?1,?end1,?post,begin2?+?half,?end2?-1);?????//此處是遍歷先序右子樹?
  • ????}???
  • }?
  • ?
  • void?CreateHT(HTNode?ht[],?int?n)????//通過數組構造一棵哈夫曼樹,?因為一棵哈夫曼樹有n個節點的話,就會有總共2n?-?1?個節點?
  • {?
  • ????int?loop1?=?0,?loop2?=?0,?loop3?=?0,?lpos?=?0,?rpos?=?0;?
  • ????float?weight1?=?0.0f,?weight2?=?0.0f;??????//用來保存權值,其中weight1?保存的是較小的?
  • ?
  • ????for(loop1?=0;?loop1?<?n;?++loop1)????//此循環把雙親?左右孩子節點域置為?-1;?
  • ????{???ht[loop1].parent?=?-1;?
  • ????????ht[loop1].lchild?=?-1;?
  • ????????ht[loop1].rchild?=?-1;?
  • ????}?
  • ?
  • ????for(loop1?=?n;?loop1?<?2?*?n?+?1;?++loop1)?????//由于數組前面的n個節點是葉子節點,所以此處處理?后面的?n?-1?個非葉子節點?
  • ????{?
  • ????????weight1?=?32767.0f;?
  • ????????weight2?=?32767.0f;?
  • ?
  • ????????for(loop2?=?0;?loop2?<?loop1;?++loop2?)?
  • ????????{?
  • ????????????if(ht[loop2].parent?==?-1)?????????//只處理沒有雙親節點的?節點?
  • ????????????{?
  • ????????????????if(ht[loop2].weight?<?weight1)??????//保存最小的和?第二最小的權值及其位置?
  • ????????????????{?
  • ????????????????????weight2?=?weight1;?????rpos?=?lpos;?
  • ????????????????????weight1?=?ht[loop2].weight;??lpos?=?loop2;?
  • ????????????????}?
  • ????????????????else?if(ht[loop2].weight?<?weight2)?
  • ????????????????{?
  • ????????????????????weight2?=?ht[loop2].weight;?
  • ????????????????????rpos?=?loop2;?
  • ????????????????}?
  • ????????????}?
  • ????????}?
  • ????????ht[loop1].lchild?=?lpos;????ht[loop1].rchild?=?rpos;??ht[loop1].weight?=?ht[lpos].weight?+?ht[rpos].weight;?
  • ????????ht[lpos].parent?=?loop1;????ht[rpos].parent?=?loop1;?
  • ????}?
  • }?
  • //哈夫曼編碼只能是葉子節點,并且哈夫曼樹中只有度為?0?或2?的節點?
  • typedef?struct?
  • {?
  • ????char?cd[MAXSIZE];?//存儲根節點到葉子節點的編碼,即?0?或?1?
  • ????int?start;????????//開始位置?
  • }HCode;???//存儲哈夫曼遍歷的?節點結構?
  • /*?
  • void?CreateHCode(HTNode?ht[],?HCode?hcd[],?int?n)????//此函數是根據哈夫曼樹構造哈夫曼編碼,思路是從每個葉子節點開始遍歷到根節點,?如果節點是左節點?則表示為0?,如果右節點否則表示為1??
  • {?
  • ????int?loop1?=?0,?parent;?
  • ????HCode?hc;?
  • ????for(loop1?=?0;?loop1?<?n;?++loop1)?????//ht數組的前面n個元素是葉子節點,?所以遍歷前面n個節點?
  • ????{?
  • ????????hc.start?=?n;?
  • ????????parent?=?ht[loop1].parent;?
  • ?
  • ????????while(parent?!=?-1)?????????????//直到根節點?構造哈夫曼遍歷?
  • ????????{?
  • ????????????if(ht[parent].lchild?==?ht[loop1])??????//如果是左節點的話,為?0?
  • ????????????????hc.cd[hc.start--]?=?'0';?
  • ????????????else?
  • ????????????????hc.cd[hc.start--]?=?'1';???????????//否則為右節點,那么就為?1??
  • ????????????parent?=?ht[parent].parent;?????????//?
  • ?
  • ????????}?
  • ????????++hc.start;?
  • ????????hcd[loop1]?=?hc;?
  • ????}?
  • }?
  • */?
  • typedef?char?ElemType;?
  • typedef?struct?hnode?
  • {?
  • ????int?weight;?
  • ????ElemType?data;?
  • ????struct?hnode?*lchild,?*rchild;?
  • }HTree;?
  • ?
  • typedef?struct??
  • {?
  • ????ElemType?data;?
  • ????int?weight;?
  • }Node;?
  • typedef?struct??
  • {?
  • ????char?code[10];?
  • ????int?weight;?
  • ????ElemType?data;?
  • }NodeCode;?
  • ?
  • struct?cmp1?
  • {?
  • ????bool?operator()?(HTree?*node1,?HTree?*node2)?
  • ????{?
  • ????????return?node1->weight?>=?node2->weight;?
  • ????}?
  • };?
  • ?
  • void?CreateHuffm(HTree?*&root,?Node?nodes[],?int?num)?//此函數借助priority_queue<>?構造哈夫曼樹?
  • {?
  • ????int?loop1?=?0,?weight?=?0;?
  • ????HTree?*temp?=?NULL,*lchild?=?NULL,?*rchild?=?NULL;?
  • ????priority_queue<HTree?*,?vector<HTree?*>,?cmp1>??qp;?
  • ?
  • ????for(loop1?=?0;?loop1?<?num;?++loop1)?
  • ????{?
  • ????????temp?=?(HTree?*)malloc(sizeof(HTree));?
  • ????????temp->lchild?=?temp->rchild?=?NULL;?
  • ????????temp->data?=?nodes[loop1].data;?
  • ????????temp->weight?=?nodes[loop1].weight;?
  • ????????qp.push(temp);?
  • ????}?
  • ????while(qp.size()?!=?1)?
  • ????{?
  • ????????lchild?=?qp.top();?
  • ????????qp.pop();?
  • ????????rchild?=?qp.top();?
  • ????????qp.pop();?
  • ?????????
  • ????????temp?=?(HTree?*)malloc(sizeof(HTree));?
  • ????????temp->lchild?=?lchild;?
  • ????????temp->rchild?=?rchild;?
  • ????????temp->weight?=?lchild->weight?+?rchild->weight;?
  • ?????????
  • ????????qp.push(temp);???????
  • ????}?
  • ????root?=?qp.top();?
  • ????qp.pop();????
  • }?
  • ?
  • void?disp(HTree?*tree)?
  • {?
  • ????if(tree?!=?NULL)?
  • ????{?
  • ????????cout<<tree->weight<<endl;?
  • ????????disp(tree->lchild);?
  • ????????disp(tree->rchild);?
  • ????}?
  • }?
  • ?
  • ?
  • NodeCode?code[MAXSIZE];?
  • int?loop?=?0,?looop?=?0;?
  • char?pathx[10];?
  • ?
  • void?HuffmCode(HTree?*tree)??????//此函數求得每個節點的哈弗曼編碼,?利用先序遞歸的方式?
  • {?
  • ????if(tree?!=?NULL)?
  • ????{?
  • ????????if(tree->lchild?==?NULL?&&?tree->rchild?==?NULL)?
  • ????????{?
  • ????????????code[looop].data?=?tree->data;?
  • ????????????code[looop].weight?=?tree->weight;?
  • ????????????strcpy(code[looop].code,?pathx);????????????//此步驟沒用到loop的值,所以下面?
  • ????????????++looop;?
  • ????????}?
  • ????????if(tree->lchild?!=?NULL)?
  • ????????{?
  • ????????????pathx[loop]?=?'0';?
  • ????????????++loop;?
  • ????????????pathx[loop]?=?'\0';?????????????????//?????????????????????????????????????應該加上'\0'?
  • ????????????HuffmCode(tree->lchild);?
  • ????????}?
  • ????????if(tree->rchild?!=?NULL)?
  • ????????{?
  • ????????????pathx[loop]?=?'1';?
  • ????????????++loop;?
  • ????????????pathx[loop]?=?'\0';?
  • ????????????HuffmCode(tree->rchild);?
  • ????????}?
  • ????????--loop;?
  • ????????pathx[loop]?=?'\0';?
  • ????}?
  • }?
  • ?

    轉載于:https://blog.51cto.com/saibro/1183621

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的树的更多相关算法-3的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    亚洲三级黄色 | 看片在线亚洲 | 在线观看日韩视频 | 综合色综合 | 麻豆视频免费在线 | 久久免费的精品国产v∧ | 国产精品久久久久永久免费看 | 亚洲精品在线观看的 | 91九色国产蝌蚪 | 成人中心免费视频 | 午夜 在线 | 91成人精品视频 | 国产黑丝一区二区 | 在线观看视频h | 久久视频在线观看免费 | 欧洲亚洲女同hd | 97国产大学生情侣白嫩酒店 | 人人干狠狠操 | 亚洲国产三级在线观看 | 啪啪凸凸 | 日本久久不卡视频 | 亚洲国产免费看 | 人人藻人人澡人人爽 | 蜜桃av久久久亚洲精品 | 夜夜爽www | 日日干av | 激情av网址 | 午夜精品999 | 午夜 久久 tv | 国产日韩精品视频 | 婷婷资源站 | 91精品视频一区二区三区 | 久草干 | 91精品国产麻豆国产自产影视 | 久久国产影院 | 成年人在线免费看视频 | 丁香婷婷激情五月 | 18久久久久久 | 99久久精品国产亚洲 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | www.eeuss影院av撸 | 91高清免费看 | 亚洲丝袜一区 | 亚洲精品黄色在线观看 | 亚洲成人av片在线观看 | av视屏在线 | 夜夜躁日日躁狠狠久久88av | 婷婷久久一区二区三区 | 日韩免费电影网 | 91.精品高清在线观看 | 黄色小网站在线 | 99在线热播精品免费 | 在线免费色| 免费人成网 | 91女子私密保健养生少妇 | 欧美日韩国产一二三区 | 不卡的av在线播放 | 免费a一级 | 国产涩涩网站 | av超碰免费在线 | a一片一级 | 久久av免费 | 日狠狠| 国产高清专区 | 97成人资源 | 91精彩视频在线观看 | 久久久久亚洲精品男人的天堂 | 久久午夜国产精品 | 亚洲一级黄色片 | 麻豆精品视频在线观看免费 | 日韩电影一区二区在线观看 | 久久婷婷精品 | 97超碰资源网 | 日日夜夜骑| 白丝av在线 | 久久国产精彩视频 | 国产成人精品一区二区三区网站观看 | 久久国产经典视频 | 五月天综合色激情 | 手机在线中文字幕 | 亚洲成av人影院 | 精品国产成人在线 | 国产成人一区二区三区久久精品 | 日本久久免费视频 | 国产精品亚洲人在线观看 | 免费久久网 | 天堂在线免费视频 | 国产91对白在线 | 精品国产一区二区三区久久久蜜臀 | 免费看污黄网站 | 天天射射天天 | 日韩有码在线观看视频 | 亚洲综合在线五月 | 黄色大片免费播放 | 婷婷国产精品 | 欧美亚洲国产日韩 | 亚洲精品综合一区二区 | 激情欧美网| 青草视频在线 | www.com黄色 | 亚洲欧美精品一区 | 亚洲片在线 | 欧美日韩免费观看一区二区三区 | 国产黄网站在线观看 | 亚洲成免费 | 亚洲视频久久久久 | 欧美一级日韩三级 | 午夜成人免费电影 | 99久久久国产免费 | 欧美一区视频 | 天天爱天天射天天干天天 | 又黄又网站 | 狠狠躁日日躁狂躁夜夜躁av | 国产精品永久在线 | 久久天天躁| 黄色一级网 | aaa毛片视频 | 成人午夜免费剧场 | 亚洲国产成人高清精品 | 色吊丝在线永久观看最新版本 | 国产亚洲成av片在线观看 | 国产一区视频在线观看免费 | 欧美另类xxxxx | 一本一本久久aa综合精品 | 999久久久久久久久久久 | 国产在线一区观看 | 亚洲国产成人在线 | www麻豆视频 | 亚洲国产三级在线观看 | 国产精品都在这里 | 国产福利91精品张津瑜 | 欧美日韩精品在线一区二区 | 成人影片在线免费观看 | 粉嫩av一区二区三区四区在线观看 | 亚洲 欧洲av | 黄色在线观看污 | 亚洲黄色免费在线看 | 91看片淫黄大片一级在线观看 | 久久久久欧美精品 | 国产成人精品综合久久久 | 91精品综合在线观看 | av在线播放免费 | 午夜视频在线观看网站 | 欧美成人久久 | 亚洲狠狠 | 亚洲视频久久 | 狠狠色噜噜狠狠狠狠2022 | 亚洲国产美女精品久久久久∴ | 国产精品免费在线播放 | 91精品国产乱码久久桃 | 人人添人人澡人人澡人人人爽 | 精品国产一区二区三区久久久久久 | 亚洲国产欧洲综合997久久, | 黄色小说视频在线 | 成年人视频在线免费 | 婷婷色在线观看 | 亚洲精品一区二区三区在线观看 | 国产精品丝袜久久久久久久不卡 | 成人理论电影 | 在线观看国产福利片 | 揉bbb玩bbb少妇bbb | 亚洲免费av一区二区 | 亚洲精品www久久久 www国产精品com | 亚洲人成人在线 | 五月天婷婷在线播放 | 婷婷在线免费观看 | 天天干天天做 | 欧美精品在线观看免费 | 黄色在线观看www | 九九免费在线观看视频 | 少妇性aaaaaaaaa视频 | 在线视频 影院 | 亚洲成人精品久久久 | 在线观看黄a | 在线亚洲日本 | av网址aaa| 在线观看麻豆av | 欧美日韩视频在线观看一区二区 | 中文字幕在线观看视频免费 | 在线观看av网 | 69国产精品视频 | 国产精品麻豆三级一区视频 | 天天射天天干天天插 | 在线 国产一区 | 国产又粗又猛又黄又爽的视频 | 在线观看av中文字幕 | 亚洲最大av在线播放 | 亚洲综合涩 | 视频一区在线免费观看 | 久久不射电影院 | 国产99久久久国产精品免费看 | 国产小视频免费观看 | 人人艹人人| 精品久久中文 | 亚洲国产精品久久久久 | 99精品视频免费看 | 成人网中文字幕 | 成人免费观看在线视频 | 人人插人人干 | 亚洲精品在线一区二区 | 中文字幕中文字幕 | 91日本在线播放 | 色综合在 | 高清av免费看 | 国产色就色 | 国产v亚洲v | 视频在线精品 | 国产黄a三级三级 | 中文字幕在线影院 | 国产精品久久久免费 | 中文av不卡| 一级黄网 | 久久久九色精品国产一区二区三区 | 天天激情在线 | 日韩成人精品一区二区三区 | 国产一级不卡毛片 | www.在线观看av| 免费黄在线观看 | 97超碰免费在线观看 | 亚洲天堂社区 | 婷婷久久婷婷 | 久久天天拍| 国产精品视频永久免费播放 | 日韩一区二区三区高清在线观看 | 久久综合中文色婷婷 | 中国精品少妇 | 亚洲亚洲精品在线观看 | 黄色app网站在线观看 | 中文字幕第| 中文字幕第一页在线 | 亚洲国产中文在线观看 | 成人免费精品 | 天天操天天舔天天爽 | 亚洲黄网站| 免费观看成年人视频 | 99视频精品免费视频 | 欧美男男激情videos | 高潮久久久 | 五月香婷| 色在线免费 | 色综合久久久久久久久五月 | 久久久久国产一区二区三区四区 | 日韩久久精品一区二区三区下载 | 久草免费看 | 免费在线观看成人av | 91豆花在线观看 | 中文字幕在线网 | 国产又粗又猛又黄又爽 | 98精品国产自产在线观看 | 国产精品一区二区av影院萌芽 | 成人污视频在线观看 | 片网站| 夜色资源站国产www在线视频 | 国内精品久久久 | 婷婷色五| 国产在线精品国自产拍影院 | 国内视频在线 | 亚洲综合国产精品 | av免费观看高清 | 99精品国产一区二区三区麻豆 | 天天操天天干天天爽 | 国产精品九九九九九 | 五月天堂色 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 色婷婷激情综合 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 久久天| 久久天天躁夜夜躁狠狠85麻豆 | 婷婷中文字幕在线观看 | 国产精品麻豆果冻传媒在线播放 | 欧美久久久久久久久 | 8090yy亚洲精品久久 | 成人午夜电影久久影院 | 天天爱天天| 精品国产aⅴ麻豆 | 免费观看性生交 | 九九涩涩av台湾日本热热 | 一区二区在线影院 | 日韩欧美国产精品 | 国产亚洲亚洲 | 午夜精品久久久久久 | 日韩午夜精品福利 | 国内精品亚洲 | 天天操操操操操操 | 色婷婷久久 | 国产欧美日韩精品一区二区免费 | av丁香花| 久草视频精品 | 婷婷丁香九月 | 在线视频观看国产 | 国产一级特黄电影 | 视频二区在线 | 美女视频黄免费的 | 日韩小视频网站 | 亚洲aⅴ免费在线观看 | 免费高清在线观看成人 | 一区二区三区四区五区在线 | 国产精品一区二区久久精品 | 欧美成人影音 | 亚洲三级性片 | 欧美一区二区三区在线视频观看 | 有码中文在线 | 国产一级片免费观看 | 超碰97国产精品人人cao | 99精品福利 | 免费男女网站 | 日本精品一区二区在线观看 | 日韩中文字幕免费在线播放 | .国产精品成人自产拍在线观看6 | 亚洲精品毛片一级91精品 | 玖玖在线视频观看 | 日韩av在线免费看 | 狠狠躁18三区二区一区ai明星 | 国产精品免费人成网站 | 四虎影视av| 国产精品在线看 | 深夜免费小视频 | 亚洲综合色站 | 国产成人久久av免费高清密臂 | 色欧美88888久久久久久影院 | 久久综合婷婷综合 | 日本精品久久久久 | 成人影视免费 | 国产精品免费久久久久久久久久中文 | 国产精品ssss在线亚洲 | 岛国av在线 | 91香蕉亚洲精品 | 亚洲成av人片一区二区梦乃 | 亚洲国产97在线精品一区 | 丰满少妇在线观看资源站 | 国产欧美日韩视频 | 中文字幕在线高清 | 91插插插免费视频 | 在线午夜电影神马影院 | 天天射天天射 | 国产精品国产三级国产不产一地 | 97超碰资源总站 | 久久免费看a级毛毛片 | 精品久久久久久一区二区里番 | 激情五月伊人 | 国产视频中文字幕 | 91在线中文字幕 | 中文在线a√在线 | 色综合久久88色综合天天人守婷 | 美国av大片 | 99精品国自产在线 | 人人超碰97 | 久黄色| 国产福利小视频在线 | 一区二区三区在线免费观看 | 日韩免费视频播放 | 一区精品久久 | 久久国产精品99精国产 | 一区在线播放 | 亚洲欧洲成人 | 久久久色 | 久久夜色电影 | 91麻豆精品国产91久久久久久久久 | 国产精品久久麻豆 | 天天插天天色 | 激情五月播播久久久精品 | 久久视频国产精品免费视频在线 | 成人精品亚洲 | 麻豆视频在线免费观看 | 久久精彩视频 | 久久成电影 | 国产精品色婷婷视频 | 日韩精品在线播放 | 精品a在线 | 日韩在线视频线视频免费网站 | 天天操天天干天天操天天干 | 激情小说 五月 | 国产高清视频在线播放一区 | 在线色资源 | 久久精品欧美一区二区三区麻豆 | av资源免费看 | 97在线看片| 91在线精品观看 | 色综合久久综合中文综合网 | 久久免费视频一区 | 69精品在线观看 | 亚洲精品国产精品久久99热 | 97偷拍视频 | 在线www色 | 国产视频2 | 欧美一级欧美一级 | 最新av网址在线观看 | 国产亚洲片 | 成人av在线亚洲 | 91看片淫黄大片在线播放 | 黄色一级在线观看 | 久久激情小说 | 国产精品电影在线 | 日韩成人免费电影 | 亚洲无吗视频在线 | 911国产精品 | 91久久精品日日躁夜夜躁国产 | 亚洲人成精品久久久久 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产午夜三级一区二区三 | 天天天天综合 | 黄色软件在线观看 | 一区二区三区韩国免费中文网站 | 狠狠久久综合 | 中文字幕超清在线免费 | 久久亚洲影视 | 6080yy精品一区二区三区 | 国产一级免费电影 | 国产黄色片在线免费观看 | 国产精品精品久久久久久 | 人人澡视频 | 久久视频在线看 | 亚洲乱码精品久久久久 | 毛片的网址 | 欧美综合色在线图区 | 777xxx欧美 | 日日操天天操夜夜操 | 国产一区二区中文字幕 | 奇米影视8888在线观看大全免费 | 国产成人精品a | 亚洲国产精品免费 | 久久久久麻豆v国产 | 欧美日韩国产一区二区在线观看 | av中文资源在线 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 日韩无在线 | 日韩精品一区二区久久 | 国产精品igao视频网网址 | 9在线观看免费高清完整版 玖玖爱免费视频 | 最新av免费在线 | 国产在线精品区 | 狠狠狠色丁香婷婷综合久久88 | 99久久精品国产一区二区成人 | 粉嫩av一区二区三区免费 | 欧美亚洲免费在线一区 | 国产夫妻自拍av | 久久99国产精品免费网站 | 69国产盗摄一区二区三区五区 | 天天天色综合 | 成av在线| 久久精品国产精品亚洲 | 免费在线观看一区二区三区 | 日韩艹 | 免费人成在线观看 | 久久综合狠狠综合 | 日韩精品一区二区三区三炮视频 | 亚洲成a人片综合在线 | 欧美a视频在线观看 | 激情五月婷婷综合网 | 91视频中文字幕 | 亚洲精品在线一区二区三区 | 在线观看黄色 | 亚洲电影网站 | av免费看av | 色综合天天狠天天透天天伊人 | 亚洲日本国产精品 | 国产一区二区免费 | 国产精品一区二区三区四区在线观看 | 91精品国自产在线 | 成人性生爱a∨ | 亚洲精品乱码久久久久v最新版 | 国产一区免费 | 亚洲欧美色婷婷 | 中文字幕日韩在线播放 | 欧美精品九九 | 激情影院在线 | 你操综合 | 狠狠狠色丁香婷婷综合久久五月 | 亚洲精品理论 | 亚洲毛片久久 | 狠狠干在线播放 | 91九色自拍 | 成年免费在线视频 | 成人免费视频a | 波多野结衣一区二区三区中文字幕 | 日本精品视频在线播放 | 成人毛片一区二区三区 | 日韩在线无| 亚洲天堂香蕉 | 超碰在线网| 日韩免费一二三区 | 日韩在线视频不卡 | 日日夜夜干 | 精品国产123| 日本成人中文字幕在线观看 | 黄色毛片在线 | 91久久爱热色涩涩 | 中文字幕有码在线 | 在线日韩一区 | 天天曰天天曰 | 免费男女羞羞的视频网站中文字幕 | 在线国产一区 | 99久久精品无免国产免费 | 亚洲一区二区精品 | 国产在线观看污片 | 国产精品网红直播 | 久久久男人的天堂 | 在线91视频 | 黄色在线看网站 | 日本福利视频在线 | 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美在线1区| 国产在线视频不卡 | 狠狠久久婷婷 | 国产999精品久久久影片官网 | 最新午夜 | 丝袜足交在线 | 国产免费亚洲 | 久久国产精品视频观看 | www狠狠操| av动图| 天天射天天拍 | 丁香六月婷婷开心婷婷网 | 国产精品久久久久免费 | 97在线观 | 亚洲精品视频在线免费播放 | 国产精品综合久久久久 | 在线播放一区二区三区 | 亚洲va天堂va欧美ⅴa在线 | 欧美va天堂va视频va在线 | 久久国产精品色婷婷 | 国产在线高清精品 | 久久精品久久久精品美女 | 91福利视频一区 | 久草在线一免费新视频 | 久久伦理 | 亚洲第一中文字幕 | 精品一区二区av | 在线播放 日韩专区 | 欧日韩在线视频 | 国产1区2| 亚洲jizzjizz日本少妇 | 久久久久久久久久久久久9999 | 97国产精品亚洲精品 | 成人av资源站 | 五月天综合在线 | 99视频在线精品国自产拍免费观看 | 久久国产成人午夜av影院潦草 | 在线va视频 | 久久这里精品视频 | 国产成人三级一区二区在线观看一 | 日韩大片在线免费观看 | 91亚色在线观看 | 97久久久免费福利网址 | 91完整视频 | 久久激五月天综合精品 | 国产一区视频导航 | 亚洲日本va午夜在线电影 | 韩国在线视频一区 | 国内精品免费久久影院 | 久久影院午夜论 | 91最新国产 | 成在线播放 | 国产一线二线三线在线观看 | 国产午夜视频在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 又黄又刺激视频 | 综合伊人av| 不卡视频在线看 | 日日操日日插 | 色欧美综合 | 久久久这里有精品 | 欧美精品久 | 欧美性生活免费看 | 亚洲精品国产日韩 | 色姑娘综合 | 国产免费观看高清完整版 | 久久福利小视频 | 成人h视频 | 国产精品久久二区 | 激情开心网站 | 久草网站在线观看 | 久久天天操 | 中文字幕日韩高清 | 激情五月在线视频 | 国语精品视频 | 日韩在线观看中文字幕 | 国模视频一区二区三区 | 午夜色场 | 国产成人免费 | 国产精品美女久久久久久久久 | 四虎小视频 | 久久99热久久99精品 | 久久99精品国产麻豆宅宅 | 久久综合中文字幕 | 国色天香在线 | 菠萝菠萝在线精品视频 | 2024国产精品视频 | 国产中文字幕视频 | 精品一区二区在线看 | 欧美动漫一区二区三区 | 亚洲精品国产精品国自产在线 | 黄色成品视频 | 国产一二三四在线观看视频 | 久草91视频 | 精品久久久久久综合日本 | 亚洲国产小视频在线观看 | 国产精品美女久久久久久久久久久 | 国产精品久久久久一区二区三区 | 欧美日韩精品二区第二页 | 天天色天天操天天爽 | 在线国产精品一区 | 国产中文字幕三区 | 欧美特一级 | 黄色av免费看 | 日韩经典一区二区三区 | 国产99免费视频 | 91在线91拍拍在线91 | 欧美另类高清 | 久久精品区 | 日韩欧美精品一区二区 | 日韩一区二区免费播放 | 精品一区二区在线观看 | 天天综合网久久 | 中文字幕电影高清在线观看 | 日韩黄色大片在线观看 | 久久无码精品一区二区三区 | 91免费网址| 狠狠色噜噜狠狠狠狠2021天天 | 久久久精品免费观看 | 国产精品精品国产婷婷这里av | 日韩专区av| www色片| 日本最大色倩网站www | 国产在线91在线电影 | 国产精品一区二区三区免费看 | 久久午夜视频 | 欧美91精品国产自产 | 久久精品在线 | 狠狠久久婷婷 | 婷婷久久网 | 一区二精品 | 波多野结衣在线观看一区 | 日韩久久久 | 久久y| 国产精品视频久久久 | 国产亚洲视频在线免费观看 | 国产剧情久久 | 五月天天av | 91网免费观看 | 国产精品亚州 | 中文字幕二区 | 成人在线视频免费 | 丰满少妇一级 | 色综合国产 | 欧美人zozo | av青草 | 久久高清免费视频 | 色亚洲激情 | 91av视频导航| 色婷五月| 在线观看日韩精品 | 一级片黄色片网站 | 黄色av电影一级片 | 中午字幕在线观看 | 四虎在线观看精品视频 | 欧美精品一区二区在线观看 | 婷婷久久丁香 | 国产黄色精品视频 | 国产精品短视频 | www.黄色小说.com | 亚州精品天堂中文字幕 | 欧美日韩aaaa| 色网站视频 | 成人在线免费视频观看 | 久久久久一区二区三区四区 | 狠狠操精品| 伊人va| 精品福利av | 亚洲丝袜一区二区 | 久久精品免费播放 | 91色影院 | 在线天堂亚洲 | 人人爽人人爽av | 国产精品va在线观看入 | 久久综合久久综合这里只有精品 | 黄色日本免费 | 人人澡澡人人 | 久久艹99 | 国产精品一区一区三区 | 国产精品资源在线 | 天天射天天搞 | 精品国模一区二区三区 | 亚洲电影黄色 | 夜夜婷婷 | 最新免费中文字幕 | 久久久性 | 九九九九九九精品任你躁 | 久草资源免费 | 精品91视频| 成人欧美一区二区三区在线观看 | 国产精品久久久久久久电影 | 国产美女精品久久久 | 五月婷婷黄色网 | 国产剧情一区二区在线观看 | 女人久久久久 | 日韩欧美国产免费播放 | 国产精品高潮呻吟久久久久 | 国产在线一线 | 麻豆国产在线视频 | 97人人人人 | 视频一区二区在线观看 | 国产精品永久久久久久久www | 欧美日韩高清一区二区 国产亚洲免费看 | 在线观看蜜桃视频 | 亚洲国产视频a | 色综合久久88色综合天天 | 成人精品在线 | 中文字幕在线免费看线人 | 午夜性色 | 91丨九色丨国产在线观看 | 日日日操 | 日韩精品一区二区三区中文字幕 | 欧美日产在线观看 | 狠狠久久婷婷 | 五月天激情综合网 | 天天操天天操天天操天天操天天操 | 在线免费亚洲 | 国内免费久久久久久久久久久 | 欧美色图视频一区 | av免费观看高清 | 国产精品美女视频网站 | 亚洲v欧美v国产v在线观看 | 在线播放视频一区 | 亚洲激情在线 | 最近中文字幕大全中文字幕免费 | 精品免费观看 | 五月亚洲婷婷 | 岛国精品一区二区 | 中文字幕在线日亚洲9 | 欧美一级日韩三级 | 中文字幕亚洲欧美 | 久久亚洲福利 | 国产高清绿奴videos | 国产69精品久久久久久久久久 | 久久久视频在线 | 久久综合婷婷国产二区高清 | 91麻豆精品国产91久久久久久 | 久久草网站| 日韩精品一区二区免费 | 精品视频成人 | 天天爱天天操 | 国产一区二区免费看 | 成人性生活大片 | av福利网址导航大全 | 久久五月天色综合 | 国产日韩欧美在线一区 | 国产一区二区在线免费 | 欧美专区国产专区 | 99精品视频在线免费观看 | 亚洲精品乱码久久久久久按摩 | 波多野结衣电影一区 | 7777精品伊人久久久大香线蕉 | 国产在线播放一区二区三区 | 欧美精品国产综合久久 | 黄色福利视频网站 | 日本深夜福利视频 | 久久综合久久综合这里只有精品 | 视频国产| 免费看日韩 | 日本精品久久久久中文字幕 | 操操操操网 | 婷婷六月天天 | 狠狠色丁香婷婷综合久小说久 | 日韩av在线一区二区 | 毛片一区二区 | 狠狠干天天操 | 高清国产一区 | 一区三区视频在线观看 | 中文字幕丝袜制服 | 亚洲国产精久久久久久久 | 国产精品第一页在线观看 | 亚洲午夜av久久乱码 | 色94色欧美| 精品久久免费 | 亚洲一级片 | 欧洲精品视频一区 | 欧美在线视频a | 成人欧美亚洲 | 日韩高清三区 | 日韩精品一区二区三区免费观看视频 | 午夜久久影视 | 国产精品尤物视频 | 五月天久久综合 | 免费高清看电视网站 | 狠狠久久| 日韩天堂在线观看 | 国产亚洲资源 | 亚洲久草视频 | 中文字幕乱码在线播放 | 久久好看免费视频 | 亚洲成人二区 | 亚洲精品大片www | 六月丁香六月婷婷 | 欧美aaaxxxx做受视频 | 综合色亚洲 | 3d黄动漫免费看 | 91在线亚洲 | 国内亚洲精品 | 亚洲无吗av | 在线成人免费电影 | 亚洲一区 影院 | 国产精品1024 | 欧美日韩大片在线观看 | 日韩电影在线观看一区二区 | 日韩久久午夜一级啪啪 | 成人黄色小说视频 | 午夜视频福利 | 久久无码精品一区二区三区 | 香蕉免费在线 | 国产精品第52页 | 丁香激情视频 | 日韩高清免费无专码区 | 久久久精品一区二区三区 | 精品av在线播放 | 国产精品18久久久久久首页狼 | 久久激五月天综合精品 | 欧美有色 | 亚洲精品xx | 亚洲精品视频在线观看网站 | 国产裸体永久免费视频网站 | 欧美日韩一级在线 | 欧美日韩中文字幕综合视频 | 亚洲三级在线播放 | 国产精品爽爽爽 | 天堂av网在线 | 欧美美女激情18p | 久久国产精品久久精品 | 天天操天天曰 | 天天干干| 欧美日韩高清在线一区 | 日韩一区二区三区高清在线观看 | 国产 日韩 欧美 在线 | 国产色女 | 精品国产_亚洲人成在线 | 日韩欧美一区二区不卡 | 免费在线观看视频a | 中文字幕色站 | 国产成人一区三区 | 欧美日韩中文视频 | 亚洲精品午夜视频 | 久草在线综合 | 青草视频网| 99亚洲国产 | 欧美大片在线看免费观看 | 亚洲精品一区中文字幕乱码 | 国产精品一区二区在线免费观看 | 国产视频一区二区在线播放 | 国产精品一级在线 | 人人爽人人香蕉 | 91精品天码美女少妇 | 成年人黄色大全 | 一区二区伦理 | 最近中文字幕高清字幕免费mv | 亚在线播放中文视频 | 国产精品久久久久影视 | 久久伊99综合婷婷久久伊 | 天天操天天干天天爽 | 婷婷六月天丁香 | 日批在线观看 | 久在线观看 | 久久免费试看 | 丁香婷婷激情五月 | 五月天婷婷在线观看视频 | 国产精品久久久久久影院 | 婷婷丁香在线 | 美女视频是黄的免费观看 | 日日夜夜精品免费 | 亚洲精品国产精品国自产观看浪潮 | 一级做a视频 | 美女视频国产 | 91精品人成在线观看 | 日批视频 | 国产自产在线视频 | 免费在线中文字幕 | 特级西西444www大胆高清无视频 | av最新资源 | 国产精品中文字幕在线 | 五月婷婷在线视频观看 | 国产中文字幕视频 | 最新av电影网址 | 激情网站免费观看 | 国产午夜影院 | 韩国精品视频在线观看 | 久久综合色婷婷 | 九九热re | 黄色av电影一级片 | 日韩三级在线观看 | 婷婷激情五月 | 国产婷婷一区二区 | 99精品视频在线免费观看 | 精品国产乱码 | 粉嫩一二三区 | 麻豆视频免费在线播放 | 一区二区三区久久 | 9999在线观看 | 久久久久99精品成人片三人毛片 | 久久精品理论 | 西西444www大胆高清图片 | 亚洲成av人影院 | 片网址| 97成人精品视频在线播放 | 亚洲精品国产品国语在线 | 久久午夜羞羞影院 | 在线激情网| 天天操网站 | 欧美日韩国产成人 | 国精产品999国精产 久久久久 | 亚洲欧美日韩精品一区二区 | 欧美日韩三级在线观看 | 国产一级视频在线观看 | 激情五月在线视频 | 久久久久国产精品免费免费搜索 | 天天艹日日干 | 国产字幕在线观看 | 亚洲影视资源 | 成人资源在线观看 | 国产成人一级 | 精产嫩模国品一二三区 | av看片网| 亚洲91av| 久久久网页| 九九久久电影 | 97在线观看视频国产 | 人人爽人人爽人人 | 天天色成人 | 国产中文字幕在线免费观看 | 国产黑丝一区二区三区 | 99热手机在线观看 | 国产成人av| 人人射人人爽 | 天天艹天天| 色网站免费在线看 | 丰满少妇麻豆av | 亚洲经典视频 | 日本一区二区三区免费看 | 国产精品夜夜夜一区二区三区尤 | 天天操天天是 | 99热 精品在线 | 黄色资源在线 | 在线观看a视频 | 国产成人高清在线 | 99精品视频在线观看播放 | 欧美精品久久久久久久久免 | 亚洲小视频在线观看 | 久久精品欧美一区 | 在线a亚洲视频播放在线观看 | 国产精品久久久久久久久久尿 | 夜夜躁狠狠躁日日躁 | 亚洲国产无| 97av视频 | 国产日韩欧美在线观看 | 日日夜夜狠狠干 | 国产精品网红直播 | 高潮久久久久久 | 欧洲精品一区二区 | av黄色成人 | 在线看中文字幕 | 亚洲一级片 | 波多野结衣电影久久 | 在线观看www91 | 国产一区二区在线免费播放 | 五月婷婷在线观看视频 | 日韩欧美高清一区二区三区 | 9992tv成人免费看片 | 深爱激情亚洲 | 草久在线视频 | 6080yy精品一区二区三区 | 欧美性视频网站 | 99色免费视频 | 免费看v片网站 | 国产中文字幕三区 | 色天堂在线视频 | 国产一线二线三线在线观看 | 欧美日韩国产免费视频 | 一区二区三区精品久久久 | 最近中文字幕免费视频 | 国产成人免费在线 | 日日夜夜天天久久 | 国产99免费视频 | 91桃色在线观看视频 | 成人丁香花 | 久久99国产综合精品免费 | 一区二区视频网站 | 精品国产一区二区三区男人吃奶 | 丁香激情视频 | 欧美日韩国产一区二区三区在线观看 | 中文字幕亚洲在线观看 | 亚洲精品国产综合99久久夜夜嗨 | 免费av 在线| 午夜狠狠操 | 天天草天天色 | 亚洲精品午夜久久久久久久久久久 | 9在线观看免费高清完整版在线观看明 | 亚洲 中文 欧美 日韩vr 在线 | 最近中文字幕免费av | 88av色| 久久综合网色—综合色88 |