C語言程式設計題,關於樹的層次遍歷

2021-09-11 16:11:11 字數 1416 閱讀 3709

問題:

輸出樹的層次遍歷的奇數層的所有結點。(未必是二叉樹)

輸入:從input.txt檔案讀入資料。

每行的第乙個字母表示雙親結點,每行第乙個以後的字母表示該雙親結點的孩子結點。第一行的第乙個結點表示根結點。如輸入格式中第一行a b c,a為根結點並且為雙親結點,b c為其孩子結點。a b c間有空格。

輸出:結果輸出到output.txt中。

輸出奇數層的所有結點。每層輸出一行。

如:input.txt中的輸入格式:

a b c

b ec f g

output.txt的輸出格式:

第1層結點:a

第3層結點:e,f,g

**如下:

#include

#include

#include

#include

using namespace std;

int level[100];           //標記每個結點所在層

char str[20];              //儲存讀入的一行結點

int node[20][50];         //以數字的形式儲存每行的結點

int q_output[100];        //按順序儲存佇列輸出的結點

queueq;             //定義乙個佇列用於層次遍歷;

vectoredge[100];    //定義鄰接表儲存樹的結點

int main()

for(i=0;i<20;++i)

for(j=0;j<50;++j)

node[i][j]=0;

for(i=0;i<100;++i)

line=0;

while(fgets(str,100,fp1)!=null)

line++;

}//用node[i][j]陣列儲存輸入的結點,i代表行從0開始,j代表每行第幾個結點,j=0表示雙親結點

level[node[0][0]]=1;                      //第一行第乙個結點為根結點,在第一層

for(i=0;ifor(j=0;node[i][j]!=-1;++j)

}//用鄰接表儲存樹

q.push(node[0][0]);                   //根結點入隊

int size=0;

while(!q.empty())

}i=0;

int flag,size_2;

while(iif(flag==1)

char ch='\n';

fprintf(fp2,"%c",ch);

}++i;

}fclose(fp1);

fclose(fp2);

return 0;

}

樹的層次遍歷

include includeusing namespace std 結點權值作為結點編號 int postorder 31 後序遍歷結點 int inorder 31 中序遍歷結點 int leftnodes 31 儲存某結點的左子樹編號 int rightnodes 31 儲存某結點的右子樹編號...

樹 通用樹的層次遍歷

1,為何及如何按層次遍歷通用樹中的每乙個資料元素?1,通用樹結構是一種容器型別的樹結構,其用來裝資料元素,所以應該提供一種方法來遍歷樹中的每乙個資料結構 2,往下分析 2,當前的事實 1,樹是非線性的資料結構,樹的結點沒有固定的編號方式 1,也就不能像鍊錶一樣統一編號來訪問 3,新的需求 1,為通用...

關於樹的程式設計題

public boolean issametree treenode tree1,treenode tree2 else if tree1 null tree2 null if tree1 null tree2 null else return false 原文 二叉樹的映象 public void...