→ cksh8008:第四題自己測試以後 發現可以 01/24 20:57
http://tinyurl.com/d3p77ln
關於第四題和第十一題
第四題補習班是有給答案
今天寫完考古題對一下才發現跟補習班的寫法差很多,
不過還是想請各位高手看一下我這樣可以嗎
我不想每題程式都用補習班的邏輯..
(第四題)
int main()
{
int h = TreeHight();//取得樹高
int A[h*h-1];//假設為Full Tree,最多h*h-1個node
int i=1;//放陣列用
levelorder(r,A,i);//呼叫levelorder
for(i=0;i<A.length;i++)//開始列印
{
if(A[i]==NULL)continue;//如果遇到空元素就跳過
printf(A[i] );//只列印非空元素
}
}
void levelorder(node*r,int*A[],i)//節點,陣列,放第幾格的i
{
if(R==NULL)return;//如果R為空就結束
A[i]=r->data;//從A[1]開始照順序放
levelorder(r->left,A,i*2);找左子樹,並讓i*2的格子表示左兒子
levelorder(r->right,A,i*2+1);右子樹
}
像這樣
A[1]
O
/ \
A[2]O OA[3] A[2]=A[i*2],A[3]=A[i*2+1]
/ \
O OA[7]
A[4]
第十一題我寫了selection sort執行k次
然後回傳A[k]元素表示第k小的數值
請問這樣可以嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.181.142.28