麻煩高手解釋一下二叉樹遍歷的實現,看了好幾遍沒看明白啊

2023-02-21 04:20:18 字數 2473 閱讀 2060

1樓:匿名使用者

遞迴。首先中序遍歷根結點,根結點不空,中序遍歷左子樹,而中序遍歷左子樹又能遞迴,所以一直到最左(左子樹的左子樹的。。。),這個結點的左子樹為空,訪問這個結點,然後中序遍歷這個結點的右子樹,右子樹又有遞迴,如果右子樹的左子樹不空,中序遍歷到右子樹的最左,如果左右都為空了後,由遞迴工作棧返回上一層遞迴

2樓:匿名使用者

........1

2 3

4 5 6 7

中序遍歷順序: 4 -> 2 -> 5 -> 1 -> 6 -> 3 -> 7

中序遍歷的程式順序: 1->2->4->4的左子樹(空)->回到4,(列印4)

->4的右子樹(空)->回到2,(列印2)->5->5的左子樹(空)->回到5,(列印5)->5的右子樹(空)->回到2->回到1,(列印1)->3->6->6的左子樹(空)->回到6,(列印6)->6的右子樹(空)->回到3,(列印3)->7->7的左子樹(空)->回到7,(列印7)->7的右子樹(空)->回到7->回到3->回到1->結束

畫個樹按**一步步走你就瞭解了~

3樓:

這是一個遞迴演算法,它將一個完整的二叉樹分解成一棵棵只有兩層的二叉樹,即只有結點,左子樹(可無),右子樹(可無)。

在執行的時候,先檢視結點,如果發現有左子樹,則將左子樹看做結點,檢視左子樹,如果以左子樹為結點的二叉樹有左子樹,繼續訪問……直到結點沒有左子樹為止,即不斷深入,直到找到這棵二叉樹最底層,最左邊的二叉樹,然後訪問,列印資料。

之後就檢視是否有右子樹,如果有,則以右子樹為結點,繼續遞迴,檢視它的左子樹

如果沒有,則這層遞迴結束,返回上級函式。

如果返回的上級函式沒有執行結束,則繼續,否則結束,返回上級。

用例項來說就是:

12 3

4 5 6

7 8

順序應該是:4->2->7->5->1->6->8->3將遞迴擴來應該是這樣:

bitree*t;

inorder(bitree*t)

{if(1)

{inorder(2);

{if(2)

{inorder(4);

{if(4)

{inorder(0);

printf(

4樓:匿名使用者

思維跟著函式執行順序走就行了,實在不行,用筆…… -.-b

5樓:匿名使用者

這是中序遍歷二叉樹。首先二叉樹非空就是說這不是葉子節點,然後先訪問左子樹也使用中序遍歷方法,然後輸出該節點,最後以中序方式遍歷右子樹,就是這樣,很簡單啊

二叉樹的層次遍歷

6樓:子夜楊旭

設計一個演算法層序遍歷二叉樹(同一層從左到右訪問)。思想:用一個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。

void hierarchybitree(bitree root)destroyqueue(q); // 釋放佇列空間

return ;

這個已經很詳細了!你一定可以看懂的!加油啊!

7樓:匿名使用者

樹: a

/ \b f

/ \ \

c d g

/ \e f

從上到下,從左到右:a、b、f、c、d、g、e、f

8樓:網名

void level (btnode *p)

if(q->rchild!=null)}}

計算機,資料結構,二叉樹的遍歷,先序遍歷,後序遍歷,中序遍歷,急急急急急急,跪求高手幫助

實現圖的廣度優先搜尋演算法需使用的輔助資料結構為( ) a. 棧 b.佇列 c. 二叉樹 麻煩解釋一下,謝謝

9樓:匿名使用者

廣度優先copy用佇列,深度優先用棧。簡單說明bai如下:

廣度優先:當一du個節點zhi被加入佇列時,要標記為已遍歷,遍歷過

dao程中,對於佇列第一個元素,遍歷其所有能夠能一步達到的節點,如果是標記未遍歷的,將其加入佇列,從第一個元素出發所有能一步直接達到的節點遍歷結束後將這個元素出列。

深度優先:當遍歷到某個節點a時,如果是標記未遍歷,將其入棧,遍歷它能夠一步直接達到的節點,如果是標記未遍歷,將其入棧且標記為已遍歷,然後對其進行類似a的操作,否則找能夠一步直接達到的節點進行類似操作。直到所有能夠一步直接達到的節點都已遍歷,將a出棧。

這裡使用「能夠能一步達到的節點」而非「與其相鄰的節點」是考慮到有向圖因素。

具體可以找個圖,然後使用廣度和深度演算法搜尋一遍,每步自己手工修改佇列和棧就明白怎麼回事了。

關於二叉樹的遞迴遍歷還是不理解 那位高手能不能詳細講一下!!! 10

請解釋下二叉樹的度數,二叉樹的度是什麼?

二叉樹度數最大為2吧,有個關係是度數為2的結點個數加1等於度數為零的結點個數。什麼叫二叉樹的度?帶你了解它的特點。二叉樹樹是一種重要的非線性資料結構,直觀地看,它是資料元素 在樹中稱為結點 按分支關係組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構...

寫出先序遍歷的二叉樹的遍歷演算法,怎樣實現二叉樹的前序遍歷的非遞迴演算法

遞迴方式 include typedef struct nodebitnode,bittree void createtree bittree bt void visit char ch void preorder bittree bt void main include include defin...

一顆二叉樹的前序遍歷序列是ABCDEFG後序遍歷序列是CB

首先前序遍歷順序是 根節點 左子樹 右子樹而後序遍歷順序是 左子樹 右子樹 根節點首先知a是根節點 又由後序遍歷知d必然是右子樹的根節點d前面的abc中a是根節點 剩下的bc倆個節點必然是左子樹的答案是2個 如果一顆二叉樹的先序遍歷序列是abdfceg,中序遍歷序列是dfbaceg,則它的後序遍歷序...