重啟c語言之樹 列出葉結點

2021-10-06 10:19:56 字數 1243 閱讀 6567

對於給定的二叉樹,本題要求你按從上到下、從左到右的順序輸出其所有葉節點。

輸入格式:

首先第一行給出乙個正整數 n(≤10),為樹中結點總數。樹中的結點從 0 到 n−1 編號。隨後 n 行,每行給出乙個對應結點左右孩子的編號。如果某個孩子不存在,則在對應位置給出 「-」。編號間以 1 個空格分隔。

輸出格式:

在一行中按規定順序輸出葉節點的編號。編號間以 1 個空格分隔,行首尾不得有多餘空格。

輸入樣例:

81-

--0-

27--

--5-

46

輸出樣例:

4

15

思路:我是分為三個部分,第乙個部分就是對該樹的建立過程,且在建立中記錄出現過的結點,最後沒有出現的結點即為根節點。第二個部分為對該樹按照廣度優先的順序進行輸出,且我這裡採用的是用陣列模擬佇列的方法。第三部分即輸出符合條件的結點即可,因為第二部分已經按照廣度優先的順序儲存結點到陣列中,因此只需要對陣列中的元素依次判斷是否為葉子結點,若是則輸出否則則不輸出。

**如下所示:

#include

#include

struct node

t[20];

intmain()

;scanf

("%d"

,&n)

;//第一部分的**,即建立樹的結構並找出根節點root

getchar()

;for

(int i =

0; i < n; i++)if

(cr ==

'-')

t[i]

.right =-1

;else

getchar()

;}int root;

for(

int i=

0;i//第二部分將樹按照廣度優先的順序儲存到陣列a中 ,其中i模擬隊頭但不進行刪除操作,j模擬隊尾進行入隊計數

int a[20]

; a[0]

=root;

int i=

0,j=

1,flag=0;

while

(i!=

(n-1))

if(t[a[i]

].right!=-1

) i++;}

//第三部分將葉子結點輸出

for(i=

0;i}

pta樹的同構與列出葉結點(詳解)

目錄 樹的同構 首先上思路大致思路 先找到該樹的根節點,然後順著根節點下去,到達的每乙個節點的時候,所在的那一層進行比較,之後開始比較給節點的左右孩子,像深搜一樣。詳解見 列出葉結點 這題我看網上,其他人基本上都是用bfs寫的,這題我沒用,收到了上題的啟發,這是我自己寫的,寫的比較簡單,好理解,也能...

7 16 列出葉結點 25分 C語言實現

對於給定的二叉樹,本題要求你按從上到下 從左到右的順序輸出其所有葉節點。輸入格式 首先第一行給出乙個正整數 n 10 為樹中結點總數。樹中的結點從 0 到 n 1 編號。隨後 n 行,每行給出乙個對應結點左右孩子的編號。如果某個孩子不存在,則在對應位置給出 編號間以 1 個空格分隔。輸出格式 在一行...

重啟c語言之串 串的模式匹配

給定乙個主串s 長度 10 6 和乙個模式串t 在長度 10的五次冪 要求在主串s中找出與模式t相匹配的子串,返回相匹配的子串中的第乙個字元在主串s 現的位置。輸入格式 輸入有兩行 第一行是主串s 第二行是模式t.輸出格式 輸出相匹配的子串中的第乙個字元在主串s 現的位置。若匹配失敗,輸出0.輸入樣...