UVA122 題目解答

2022-09-23 15:00:08 字數 1253 閱讀 7911

uva122 題目解答:以任意順序給出一棵二叉樹的節點,格式如: (5,llrl), 數字表示該節點的值。

要求輸出一棵樹中從乙個葉子走到根節點的取到最小權值和的那個葉子節點,假如有多個葉子節點能取到最小的權值,則輸出葉子權值本身最小的那個葉子.題目保證了每個節點的權值都是不同的.假如一組輸入,存在乙個節點被賦值超過1次或者沒被賦值,則輸出"not complete".每組輸入用()作為該組資料的終結符

題目其實沒啥說的,主要還是輸入輸出比較麻煩,只要把這顆樹讀進去,還是非常簡單的.

照著劉汝佳默寫出了人生中第乙個bfs,**如下.

#include

#define rep(i,a,n) for(i=a;i<=n;i++)

#define per(i,a,n) for(i=a;i>=n;i--)

#define maxn 256+20

using namespace std;

bool failed;

vector ans;

bool bfs();

bool read_tree();

void addnode(int v,char* str);

struct node;

node* root;

node* newnode()

bool bfs()

return true;

}char s[maxn];

bool read_tree()

return true;

}void addnode(int v,char* str)

else if(str[i]=='r')

} if(tmp->valued)failed=true;

tmp->val=v;

tmp->valued=true;

}int main()

}printf("\n");

} }}其中結構體指標也是這學期剛在資料結構課上看的,就是用 p->l,p->r就可以從根往葉子節點走.

然後代買裡面有3個函式值得講一講.

首先是strcmp(char*p,char*q)假如兩個陣列相等,則返回0,所以題目裡面用(!strcmp(p,"()")return ;

然後就是sscanf(&s[1],"%d",&v);用&s[1]是為了把(給略過,用這個可以直接讀到裡面的數字,賦值給變數v,這個用法直接背下來吧,今晚再慢慢看具體實現.

最後是strchr()用來找某個字元在某陣列**現的第乙個index.這樣就可以直接讓addnode讀入節點的位置。

Uva1600題目解答

uva1600題目解答 題意 給乙個迷宮,求 從 1,1 到 m,n 最少需要幾步。但是有個限制條件,迷宮中有很多障礙,給出k,表示可以在迷宮中連續穿過障礙不超過k個。思路 還是bfs,只不過再結構體中多了乙個屬性 連續穿障礙個數 1 當走到路時正常入隊即可 2 當遇到障礙時需要判斷當前是連續的幾次...

uva122 二叉樹的動態建立與BFS (非遞迴)

題目大意是根據一組一組離根節點的操作確定子節點。思路 根據操作直接推出節點的編號,將編號和值存在陣列中建立二叉樹。includeusing namespace std int vis 100000 tree 100000 char s5 100000 int main s5 n a if flag1...

演算法導論12 2節習題解答

clrs 12.2 1 c錯,240及240之後的節點應該都為911左子樹上的節點,那麼所有節點必然小於或等於911,但點912明顯違反了。clrs 12.2 2 search minimum x if left x nil search minimum left x return x search...