亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++將二叉樹轉為雙向鏈表及判斷兩個鏈表是否相交

2020-05-23 14:08:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++將二叉樹轉為雙向鏈表及判斷兩個鏈表是否相交的方法,文中還給出了求兩個鏈表相交的第一個節(jié)點列的實現(xiàn)方法,需要的朋友可以參考下
 

把二叉查找樹轉變成排序的雙向鏈表
例如:

C++將二叉樹轉為雙向鏈表及判斷兩個鏈表是否相交

轉換成雙向鏈表

4=6=8=10=12=14=16struct BSTreeNode{int m_nValue; // value of nodeBSTreeNode *m_pLeft; // left child of nodeBSTreeNode *m_pRight; // right child of node};

首先闡述下二叉排序樹:

它首先要是一棵二元樹,在這基礎上它或者是一棵空樹;或者是具有下列性質的二元樹: (1)若左子樹不空,則左子樹上所有結點的值均小于它的根結點的值; (2)若右子樹不空,則右子樹上所有結點的值均大于它的根結點的值; (3)左、右子樹也分別為二元查找樹

解決思路:

中序遍歷得到的即為排序好的鏈表順序,因此需要解決的就是指針的指向問題。

好吧,我首先想到的不是遍歷過程中修改指針指向(后來看別人代碼了......)

最開始的思路是在中序遍歷過程中左孩子要訪問當前節(jié)點的父節(jié)點,因此中序遍歷過程中應當傳遞當前節(jié)點和父節(jié)點。這就導致了root(根)節(jié)點與其他節(jié)點的處理方式不同。

后來想到既然中序遍歷是一個排序好的鏈表,那么遍歷過程中將當前訪問節(jié)點的地址放入一個指針數組。遍歷結束后通過這個指針數組就可以方便的知道每個節(jié)點的前驅和后繼節(jié)點,再更改節(jié)點指向即可。

最后看到了別人的代碼,總結如下:

head指針指向鏈表表頭,index指針指向鏈表尾節(jié)點。

所有節(jié)點的左指針都指向前一節(jié)點,右指針都指向后一節(jié)點。

因此:(中間過程)

  • 當前節(jié)點的左指針指向表尾節(jié)點;
  • 表尾節(jié)點的右指針指向當前節(jié)點;
  • 更新,尾節(jié)點指向當前節(jié)點;

(對于表頭,即尾節(jié)點指向NULL),初始化Head節(jié)點。

代碼如下:

void convertToDoubleList(BSTreeNode* pCurrent){  pCurrent->m_pLeft=pIndex;  if (pIndex == NULL)  {    pHead=pCurrent;  }  else  {    pIndex->m_pRight=pCurrent;  }  pIndex=pCurrent;}


判斷倆個鏈表是否相交

給出倆個單向鏈表的頭指針,比如 h1,h2,判斷這倆個鏈表是否相交。

為了簡化問題,我們假設倆個鏈表均不帶環(huán)。

問題擴展:

如果需要求出倆個鏈表相交的第一個節(jié)點列

鏈表定義

typedef struct node{  int data;  struct node * next;}List;

 

  • 如果不帶環(huán),那么分別遍歷兩個鏈表到尾節(jié)點;
  • 若果兩個鏈表相交,那么尾節(jié)點一定相交;
  • 如果兩個鏈表不相交,那么尾節(jié)點一定不相交;
int isJoinedNocylic(List * h1,List * h2){  while(h1 != NULL)    h1 = h1->next;  while(h2 != NULL)    h2 = h2->next;     return h1 == h2;}


如果需要求出倆個鏈表相交的第一個節(jié)點列?

網上看到了這樣的一個解法:設置兩個指針fast和slow,初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鏈表存在環(huán),則fast必定先進入環(huán),而slow后進入環(huán),兩個指針必定相遇。(當然,fast先行頭到尾部為NULL,則為無環(huán)鏈表),這樣就可以判斷兩個鏈表是否相交了,程序如下:

int isCycle(List * h){  List * p1, * p2;  p1 = p2 = h;  int flag;     while(p2 != NULL && p2->next != NULL)  {    p1 = p1->next;    p2 = p2->next->next;    if(p1 == p2)    {        flag = 1;      break;    }  }     flag = 0;   return flag;}

下面看看怎么找環(huán)的入口,當fast與slow相遇時,slow肯定沒有走遍歷完鏈表,而fast已經在環(huán)內循環(huán)了n圈(1<=n)。假設slow走了s步,則fast走了2s步(fast步數還等于s 加上在環(huán)上多轉的n圈),設環(huán)長為r,則:

2s = s + nrs= nr

設整個鏈表長L,入口環(huán)與相遇點距離為x,起點到環(huán)入口點的距離為a。

a + x = nra + x = (n – 1)r +r = (n-1)r + L - aa = (n-1)r + (L – a – x)

(L – a – x)為相遇點到環(huán)入口點的距離,由此可知,從鏈表頭到環(huán)入口點等于(n-1)循環(huán)內環(huán)+相遇點到環(huán)入口點(從相遇點向后遍歷循環(huán)回到入口點的距離),于是我們從鏈表頭、與相遇點分別設一個指針,每次各走一步,兩個指針必定相遇,且相遇點為環(huán)入口點,也即為兩個鏈表的第一個相同節(jié)點。程序描述如下:

List * isJoined(List * h1,List * h2){  List * ph1,*p1,*p2;  int flag;   ph1 = h1;   while(ph1->next != NULL)    ph1 = ph1->next;    ph1->next = h2;   if(0 == isCycle(h1))  {    flag = 0;  }  else  {    p1 = h1;    while(p1 != p2)    {      p1 = p1->next;      p2 = p2->next;    }    flag = p1;  }     return flag;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
成人免费在线电影网| 欧美色图免费看| 国产又粗又大又爽视频| v888av成人| 国产成人福利在线| 日韩高清在线一区| 亚洲欧美在线人成swag| 亚洲欧美制服另类日韩| 一本加勒比波多野结衣| 男女在线观看视频| 青青草免费在线观看| 亚洲视频 欧美视频| www五月婷婷| aaa一区二区三区| 国产日韩欧美一区在线| 成av人电影在线观看| 欧美成人激情图片网| 丝袜免费视频| 久久综合九色综合欧美98| 99久久国产热无码精品免费| aaa大片在线观看| 最好2018中文免费视频| 色综合久久久网| 青少年xxxxx性开放hg| 日韩乱码人妻无码中文字幕久久| 亚洲精品视频导航| 国产精品4hu.www| 亚洲欧美综合视频| 国模精品视频| 中日韩免视频上线全都免费| www.五月天色| 国产视频不卡| 亚洲天堂男人网| 欧美日韩电影一区二区| 国产日产亚洲系列最新| 成人性免费视频| 国产欧美精品| 亚洲女同同性videoxma| 97久久人人超碰caoprom| 三级黄色小视频| 大荫蒂欧美视频另类xxxx| 久久久久亚洲av无码麻豆| 五十路亲子中出中文字幕| 又黄又爽又色视频| 中文字幕人妻一区二区在线视频| www.日韩在线| 2021久久国产精品不只是精品| 国产伊人精品在线| 中文在线一区二区三区| www.超级碰| 美女露出粉嫩尿囗让男人桶| 欧美特黄一级大片| 91免费视频网站| 日韩欧美国产午夜精品| 韩国成人动漫在线观看| 欧美精品三级在线观看| 麻豆国产尤物av尤物在线观看| 久久夜色精品国产噜噜av小说| 视频一区视频二区欧美| 一本色道久久综合亚洲精品按摩| 一个人看的视频www| 国产亚洲精品va在线观看| 亚洲热在线视频| 欧美性猛交bbbbb精品| 一本一道波多野结衣一区二区| 欧美中文字幕一二三区视频| 欧美午夜久久| 成人精品视频99在线观看免费| 亚洲精品视频二区| 欧美色网在线| 国产精品人妻一区二区三区| 亚洲日韩第九十九页| 欧美熟妇一区二区| 天天影视久久综合| heisi视频网在线观看| 日韩电影在线免费| 成人性a激情免费视频| 在线观看亚洲网站| www精品美女久久久tv| 在线视频中文字幕久| 麻豆传媒在线看| 992tv人人草| 日韩一区二区视频| 欧美日韩成人激情| 亚洲mv大片欧洲mv大片精品| 日韩视频在线免费观看| 在线看黄网站| 欧美日韩免费观看一区| 日韩私人影院| 蜜桃精品视频| 99视频精品全部免费在线视频| 欧亚成年男女午夜| 都市激情久久综合| 一个人看的视频www在线观看免费| 亚洲福利视频导航| 久久久久久久久久久国产| 天天影视色香欲综合网天天录日日录| 国产一级在线| 麻豆视频在线免费看| 精品一区二区三区五区六区| 激情综合色播五月| 亚洲天堂a在线| 久久久久久久亚洲| 欧美性猛交xxxx免费看久久久| 日本免费新一区视频| 成人av网页| 黄色av网站免费在线观看| 中文字幕免费高| 2024亚洲男人天堂| 日韩欧美国产一区在线观看| 亚洲黄网站在线观看| 国产精品99久久久久久久| 日韩精品在线电影| 貂蝉被到爽流白浆在线观看| 国产精品国产三级国产专区51| 含羞草久久爱69一区| 亚洲一区二区在线播放| 性欧美成人播放77777| 一区二区三区小说| 国产综合福利在线| 全部毛片永久免费看| a视频在线播放| 亚洲a∨日韩av高清在线观看| 精品国产一区二区亚洲人成毛片| 老司机免费视频久久| 欧美亚洲第一页| 操人视频91| 国产激情在线观看| 1024在线看片你懂得| 99久久婷婷国产一区二区三区| 日本一卡二卡四卡精品| 国产综合久久久久久久久久久久| 亚洲午夜精品一区二区| 欧美极品一区二区三区| 97视频人免费观看| 国产精品乱战久久久| 亚洲成人免费av| 精品日韩成人av| 国产精品乱码一区二区| 国产精久久一区二区三区| 久久国产柳州莫菁门| 99re这里只有精品视频首页| 亚洲另类av| 天天影院图片亚洲| 日韩精品视频无播放器在线看| 熟妇熟女乱妇乱女网站| 欧美激情久久久久久久久久久| 欧美亚洲精品在线| 国产精品免费人成网站酒店| 在线观看免费视频a| 欧美美女在线| 中文字幕在线观看你懂的| 99精品国产福利在线观看免费| 91丨九色丨蝌蚪丨少妇在线观看| 波多野结衣中文字幕一区| 午夜国产精品理论片久久影院| 三年中文在线观看免费大全中国| 亚洲色成人一区二区三区小说| 精品不卡一区二区三区| 欧美日韩国产精品| 91 在线视频| 午夜免费激情视频| 久久久久久欧美精品色一二三四| 最全影音av资源中文字幕在线| 在线免费观看中文字幕| 久久久久无码国产精品| 国产主播精品在线| 中文字幕在线观看视频www| 久久出品必属精品| 五月开心六月丁香综合色啪| 在线手机福利影院| 亚洲香蕉网站| 一级黄色a毛片| 狠狠色一日本高清视频| 国产高清在线观看免费不卡| 国产呻吟对白刺激无套视频在线| 石原莉奈在线亚洲二区| 日本视频一二三区中文字幕| 国产精品免费一区| 五月天综合在线| 天天操天天是| 欧美乱妇18p| 亚洲最大av| 五月天婷婷综合社区| 久久国产精品影院| 久久九九热re6这里有精品| 日本精品一区二区三区在线播放| 麻豆影院在线| 日美av在线| 亚洲成人激情在线| 老司机在线精品视频| 蜜臀精品久久久久久蜜臀| 九色91av视频| 尤物视频在线观看国产| 久久久亚洲精品视频| 欧美日韩高清一区二区不卡| 欧美精选视频一区二区| 一级少妇精品久久久久久久| 91禁国产网站| 99re只有精品| 黄色激情在线视频| 91福利视频免费观看| 欧美做爰啪啪xxxⅹ性| 成人噜噜噜噜| 成人欧美一区二区三区白人| 色琪琪免费视频网站| 久久久亚洲午夜电影| 黄色片子在线观看| 日韩美女激情视频| 亚洲欧美日韩成人在线| 国产视频999| 国产午夜精品一区二区三区嫩草| 在线视频观看国产| dy888亚洲精品一区二区三区| 亚洲欧美久久234| 国产免费a∨片在线观看不卡| 亚洲欧美日韩中文播放| 欧美亚洲人成在线| **在线精品| 日本高清不卡aⅴ免费网站| 超碰在线观看97| 亚洲精品国产精品乱码视色| 6080yy午夜一二三区久久| 一本色道精品久久一区二区三区| 妺妺窝人体色www婷婷| 本田岬高潮一区二区三区| 亚洲一区在线视频| 牛牛影视精品影视| 91免费小视频| 国产一区二区三区av在线| 国产精品区一区二区三含羞草| 国产精品爱久久久久久久小说| 狠狠色狠狠色合久久伊人| 91视频观看视频| 国产一区二区在线电影| 99久久综合狠狠综合久久止| 一区二区三区四区在线看| 欧美视频免费| 色先锋av男人资源先锋影院| 91色精品视频在线| 亚洲成人在线观看视频| 欧美日韩第二页| 一道本在线观看| 欧美在线视频观看免费网站| 国产精品美女在线播放| 色一区二区三区四区| 国产精品999.| 精品国产麻豆| jizz内谢中国亚洲jizz| 国产麻豆天美果冻无码视频| 国产精品99视频| 99久久国产综合精品女小说| 成人18夜夜网深夜福利网| 柠檬福利视频导航| 中文字幕在线免费播放| 欧美极品影院| 福利视频电影| 成人一级视频| 色婷婷久久一区二区三区麻豆| 国产精品香蕉av| 免费日韩av| 国产激情久久| 在线观看视频中文字幕| 久久黄色小视频| 亚洲色图久久久| 污黄色在线观看| 视频福利在线| 在线电影欧美日韩一区二区私密| 波多野结衣亚洲| 欧美videos中文字幕| 先锋影音av321| 亚洲a级精品| 在线观看一区二区三区四区| 1区2区视频| 中文字幕在线中文字幕二区| 999精品国产| 国产精品入口麻豆原神| 三级小说欧洲区亚洲区| 黄免费在线观看| 中文字幕人成不卡一区| 精品在线播放免费| 人妻aⅴ无码一区二区三区| 亚洲色图日韩av| 亚洲欧美成人网| 99精品热视频只有精品10| 欧美香蕉爽爽人人爽| 国内精品久久99人妻无码| 国产一区二区在线视频播放| 欧美国产日韩精品免费观看| 日韩欧美精品网址| www.桃色av嫩草.com| 欧美成人明星100排名| 亚洲区综合中文字幕日日| 免费免费啪视频在线观播放| 久久久久国产精品麻豆ai换脸| mm131国产精品| 91久久国产婷婷一区二区| 黄色小视网站| 亚洲永久精品国产| 成人免费看的视频| 狠狠躁狠狠躁视频专区| 欧美国产日韩激情| 调教+趴+乳夹+国产+精品| 草草草视频在线观看| 国产美女高潮视频| 久久影院一区| 国产黑丝在线观看| 全部孕妇毛片丰满孕妇孕交| 亚洲精品国产嫩草在线观看| 久久国产精品色婷婷| 日韩一级理论片| 精品国产xxx| 99蜜桃臀久久久欧美精品网站| 91精品国产免费久久久久久| 色综合天天狠狠| 国产精品久久久久久久久久久新郎| 五月天黄色网址| 日本午夜一区二区| 色一情一区二区| 一个人看的视频www| 欧美精品少妇| 国产精品视频九色porn| 中文字幕欧美日韩在线| 四虎地址8848| 久久国产香蕉视频| 99在线视频免费观看| 国产亚洲一区字幕| 天天综合天天做天天综合|