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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

二叉树的深度优先和广度优先遍历

發(fā)布時間:2024/9/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树的深度优先和广度优先遍历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖的深度優(yōu)先搜索法是樹的先根遍歷的推廣,它的基本思想是:從圖G的某個頂點v0出發(fā),訪問v0,然后選擇一個與v0相鄰且沒被訪問過的頂點vi訪問,再從vi出發(fā)選擇一個與vi相鄰且未被訪問的頂點vj進行訪問,依次繼續(xù)。如果當前被訪問過的頂點的所有鄰接頂點都已被訪問,則退回到已被訪問的頂點序列中最后一個擁有未被訪問的相鄰頂點的頂點w,從w出發(fā)按同樣的方法向前遍歷,直到圖中所有頂點都被訪問。

圖的廣度優(yōu)先搜索是樹的按層次遍歷的推廣,它的基本思想是:首先訪問初始點vi,并將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點vi1,vi2, …, vi t,并均標記已訪問過,然后再按照vi1,vi2, …, vi t的次序,訪問每一個頂點的所有未被訪問過的鄰接點,并均標記為已訪問過,依次類推,直到圖中所有和初始點vi有路徑相通的頂點都被訪問過為止。

二叉樹的深度優(yōu)先遍歷的非遞歸的通用做法是采用棧,廣度優(yōu)先遍歷的非遞歸的通用做法是采用隊列。

深度優(yōu)先遍歷分為三種:前序,中序,后序。

?

首先我們知道,前序遍歷的規(guī)則是:

根結點→左子結點→右子結點
中序遍歷是:左子結點→根結點→右子結點
后序遍歷是:左子結點→右子結點→根結點

已知某二叉樹的前序是abdgcefh,中序dgbaechf,則后序是?
那么,對于一棵二叉樹,前序遍歷的第一個結點一定是這棵樹的根結點,即根結點是a。
在中序遍歷的順序dgbaechf中,以a分成左、右兩邊,左邊是bdg,右邊是echf。

所以,這棵樹現在可以確定如下:
a
/ \?
bdg echf

接下來再分別對左子樹和右子樹進行類似的操作。
對于左子樹dgb來說,在前序遍歷abdgcefh中找到bdg,證明這子樹的根是b,那么現在可以確定的樹結構如下:
a
/ \
b echf
/
dg

再看dg,前序遍歷中的順序為dg,所以d是dg這部分子樹的根,那么又因為中序遍歷的dg順序也是dg,所以g是右子結點。
即:
a
/ \
b echf
/
d
\
g

現在看echf這部分子樹,前序中順序是cefh,所以子樹根結點是c,那么左子結點是e,右子樹是hf:
得到:
a
/ \
b c
/ / \
d e hf
\
g

最后只剩下hf部分了,前序遍歷中是fh,所以根是f,那么h就是左子結點。
現在得到了整棵樹:
a
/ \
b c
/ / \
d e f
\ /
g h

對這棵樹再進行后序遍歷就行了,結果就是:DGEBHFCA

?

???????? A
??
????? B???????? C

D??????? E???????? F

????? G????????? H

?

?

二叉樹的排序的閱讀方式:

?

轉載于:https://www.cnblogs.com/songQQ/archive/2009/10/20/1587126.html

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

總結

以上是生活随笔為你收集整理的二叉树的深度优先和广度优先遍历的全部內容,希望文章能夠幫你解決所遇到的問題。

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