日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

(转载)树、森林与二叉树的转换

發(fā)布時(shí)間:2024/1/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转载)树、森林与二叉树的转换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳送門(mén)

樹(shù)、森林與二叉樹(shù)的轉(zhuǎn)換

1、樹(shù)轉(zhuǎn)換為二叉樹(shù)

由于二叉樹(shù)是有序的,為了避免混淆,對(duì)于無(wú)序樹(shù),我們約定樹(shù)中的每個(gè)結(jié)點(diǎn)的孩子結(jié)點(diǎn)按從左到右的順序進(jìn)行編號(hào)。

將樹(shù)轉(zhuǎn)換成二叉樹(shù)的步驟是:

  • 加線。就是在所有兄弟結(jié)點(diǎn)之間加一條連線;
  • 抹線。就是對(duì)樹(shù)中的每個(gè)結(jié)點(diǎn),只保留他與第一個(gè)孩子結(jié)點(diǎn)之間的連線,刪除它與其它孩子結(jié)點(diǎn)之間的連線;
  • 旋轉(zhuǎn)。就是以樹(shù)的根結(jié)點(diǎn)為軸心,將整棵樹(shù)順時(shí)針旋轉(zhuǎn)一定角度,使之結(jié)構(gòu)層次分明(使每個(gè)結(jié)點(diǎn)的第一個(gè)孩子結(jié)點(diǎn)連線位于左孩子指針位置,使每個(gè)結(jié)點(diǎn)的右兄弟結(jié)點(diǎn)連線位于右孩子指針位置)。

?

樹(shù)轉(zhuǎn)換為二叉樹(shù)的過(guò)程示意圖


2、森林轉(zhuǎn)換為二叉樹(shù)

森林是由若干棵樹(shù)組成,可以將森林中的每棵樹(shù)的根結(jié)點(diǎn)看作是兄弟,由于每棵樹(shù)都可以轉(zhuǎn)換為二叉樹(shù),所以森林也可以轉(zhuǎn)換為二叉樹(shù)。

將森林轉(zhuǎn)換為二叉樹(shù)的步驟是:

  • 先把每棵樹(shù)轉(zhuǎn)換為二叉樹(shù);
  • 第一棵二叉樹(shù)不動(dòng),從第二棵二叉樹(shù)開(kāi)始,依次把后一棵二叉樹(shù)的根結(jié)點(diǎn)作為前一棵二叉樹(shù)的根結(jié)點(diǎn)的右孩子結(jié)點(diǎn),用線連接起來(lái)。當(dāng)所有的二叉樹(shù)連接起來(lái)后得到的二叉樹(shù)就是由森林轉(zhuǎn)換得到的二叉樹(shù)。

?

森林轉(zhuǎn)換為二叉樹(shù)的轉(zhuǎn)換過(guò)程示意圖


3、二叉樹(shù)轉(zhuǎn)換為樹(shù)

二叉樹(shù)轉(zhuǎn)換為樹(shù)是樹(shù)轉(zhuǎn)換為二叉樹(shù)的逆過(guò)程,其步驟是:

  • 若某結(jié)點(diǎn)的左孩子結(jié)點(diǎn)存在,將左孩子結(jié)點(diǎn)的右孩子結(jié)點(diǎn)、右孩子結(jié)點(diǎn)的右孩子結(jié)點(diǎn)……都作為該結(jié)點(diǎn)的孩子結(jié)點(diǎn),將該結(jié)點(diǎn)與這些右孩子結(jié)點(diǎn)用線連接起來(lái);
  • 刪除原二叉樹(shù)中所有結(jié)點(diǎn)與其右孩子結(jié)點(diǎn)的連線;
  • 整理(1)和(2)兩步得到的樹(shù),使之結(jié)構(gòu)層次分明。



二叉樹(shù)轉(zhuǎn)換為樹(shù)的過(guò)程示意圖


4、二叉樹(shù)轉(zhuǎn)換為森林

二叉樹(shù)轉(zhuǎn)換為森林比較簡(jiǎn)單,其步驟如下:

  • 先把每個(gè)結(jié)點(diǎn)與右孩子結(jié)點(diǎn)的連線刪除,得到分離的二叉樹(shù);
  • 把分離后的每棵二叉樹(shù)轉(zhuǎn)換為樹(shù);
  • 整理第(2)步得到的樹(shù),使之規(guī)范,這樣得到森林。

根據(jù)樹(shù)與二叉樹(shù)的轉(zhuǎn)換關(guān)系以及二叉樹(shù)的遍歷定義可以推知,樹(shù)的先序遍歷與其轉(zhuǎn)換的相應(yīng)的二叉樹(shù)的先序遍歷的結(jié)果序列相同;樹(shù)的后序遍歷與其轉(zhuǎn)換的二叉樹(shù)的中序遍歷的結(jié)果序列相同;樹(shù)的層序遍歷與其轉(zhuǎn)換的二叉樹(shù)的后序遍歷的結(jié)果序列相同。由森林與二叉樹(shù)的轉(zhuǎn)換關(guān)系以及森林與二叉樹(shù)的遍歷定義可知,森林的先序遍歷和中序遍歷與所轉(zhuǎn)換得到的二叉樹(shù)的先序遍歷和中序遍歷的結(jié)果序列相同。

轉(zhuǎn)載于:https://www.cnblogs.com/ZhaoxiCheung/p/6142726.html

總結(jié)

以上是生活随笔為你收集整理的(转载)树、森林与二叉树的转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。