資料結構裡面深度優先搜尋的時候怎麼得到深度優先生成樹的,求大牛幫忙啊,本人菜鳥

時間 2021-08-30 10:57:52

1樓:迪倫少校

大體的思想是:從根節點出發先到左子樹,如果有子節點則繼續向下訪問,直到沒有孩子,則返回;再從左子樹根節點的右分支(如果有)訪問,按照同樣的規則進行。dfs的基本思想就是:

一路到底,只要有子樹,那就一直往深處訪問,而bfs則是按層次遍歷,訪問到一個節點時,就要訪問與這個節點同一層的所有節點。你自己找一個圖,對照書上的演算法自己畫畫,理解會深刻許多。

2樓:匿名使用者

建樹可以根據節點的值來遞迴進行。

如下是一個例子:

#include

#include

class treenode

~treenode()

};//將一個節點p加點樹curr中, 如果p的值小於當前節點就把它放到左子樹,否者右子樹

void addtotree(treenode *curr, treenode *p)

else addtotree(curr->left, p);

} else

else addtotree(curr->right, p);}}void printtree(treenode *p)void main() ;

treenode *root = new treenode(a[0]);

for(int i=1; i<5; i++)printtree(root); //中序周遊列印樹節點值。

delete root;}

資料結構 圖g的廣度、深度優先生成樹分別怎麼畫呀? 50

3樓:匿名使用者

1、首先第一步若節點右左子樹,則左鏈域lchild指示其左孩子(ltag=0),否則,令左鏈域指示其前驅(ltag=1)。若結點有右子樹,則右鏈域rchild指示其右孩子(rtag=0),否則,令右鏈域指示其後繼(rtag=1)。

3、最後幾是結點p的左指標域為空,則將其標誌位置為1,並使p->lchild指向中序前驅結點pre(即左線索化);結點pre的右指標域為空,則將其標誌位置為1,並使pre->rchild指向中序後繼結點p(即右線索化);將pre指向剛剛訪問過的結點p(即pre=p),線索化p的右子樹。

4樓:

深度優先生成樹 唯一嗎

如果給一圖,從一定點出發,那麼深度優先生成樹的畫法唯一嗎?也就是這個生成樹有左右之分嗎

這個不一定唯一,多數時候不唯一,如果某個頂點有多個未訪問的鄰接點,此時選擇不一樣的下一個點,結果都不一樣

但是對於深度優先的程式而言,因為已經限定了儲存結構和演算法步驟,此時結果才唯一

資料結構中搜尋有深度優先搜尋和廣度優先搜尋。深度中對應的回溯演算法,典型有八皇后問題,那麼廣度中是什

5樓:windows使用者

深度優先搜尋和廣度優先搜尋的目的都是圖的遍歷,回溯只是實現深搜的手段而已,並不是目的。深度優先搜尋適用於生成樹的層數少的情況,比如八皇后問題,廣度優先搜尋適用於生成樹寬度窄的情況。比如單源最短路問題。

6樓:雨落滿枝頭

你覺得5分有人回答你嗎。。

深度優先搜尋遍歷和廣度優先搜尋的遍歷序列及具體步驟和原因

格子裡兮 1 2 3 4 表示1可達到2,達到3,達到4 2 1 3 5 3 1 2 4 5 6 4 1 3 6 5 2 3 6 6 3 4 5 廣度優先搜尋就是把每一行按照順序輸出,去掉重複的,即先看1,有1,2,3,4,然後看2,因為有3,4了,所以只要5,然後看3,以此類推。一行行來。深度優先...

資料結構的問題 C,資料結構C 問題

include iostream.h include stdlib.h include stdio.h class lnode lnode lnode creatlist int n 建立鍊表 return h 返回你建立的鏈頭指標 鏈結到main中的附加頭結點上面 void lnode print...

c的資料結構問題(棧),資料結構有關棧的問題

亮 靜 define stack init size 100 c語言中定義乙個常量。stack init size 100 define stackincrement 10 c語言中定義乙個常量。stackincrement 10 include include 包含兩個標頭檔案。stdio.h和s...