一道簡單二叉樹問題,但是要讀懂題目意思不容易。
題意:給你一棵二叉樹,還有乙個序列,如001,對於深度為3的樹,第乙個0表示在根節點處向左孩子,第二個0表示在第二層處向左孩子,1表示在第三層向右孩子。輸出到達葉子節點的值。這道題跟一道小球下落的題目是一樣的。
思路:根據給出的n建立二叉樹,模擬即可。其中對於節點的方向可以利用map建立對映。另乙個思路是用陣列模擬,事實上這個過程跟二分很像。
這裡我用的是建樹模擬,為了熟悉二叉樹的建立和遍歷。
#include #include #include #include #include using namespace std;
struct bintree
;bintree *creattree(bintree *, char *, int, int);
char found(map&, bintree *, int);
int cmp(const void *_a, const void *_b)
char nobe[130][10];//儲存節點名稱
char str[260], command[10];
int i;
int main()
bintree * tmp = root;
for(int k = 0; k < n; k++)//遍歷樹
printf("%c", tmp->ch);
} printf("\n\n");
} return 0;
}bintree *creattree(bintree *root, char *str, int n, int level)
紫書刷題 UVA 712 S樹 S Trees
題目 我想用題目中給出的第二組輸入為例。3 x3 x1 x2 00010011 4000 010111 110000可以看做二進位制數000,可以轉化為十進位制的0,00010011中的第0位就是答案0 010可以看做二進位制數001,可以轉化為十進位制的1,00010011中的第1位就是答案0 1...
UVa 712 S Tree 完全二叉樹
題目傳送門 題目大意 1.輸入一堆沒用的xi 2.給出葉子序列leaf 和 m 個查詢序列str 3.輸出每串str查詢到的值 答題思路 1.查詢每個str後,接著輸出結果leaf num 2.因為是完全二叉樹,所以對每串str 設定初始下標num 0 遍歷str 更新num str i 0 2 s...
uva712 S Tree 假二叉樹重建
題意 給定x1 x2 x3 x4.的0 1指派,根據這些指派得出值真假。怎麼得出?x1 xn的順序就是它的深度 看圖 如果是0 往左邊走,1往右邊走。走n步,走到葉子,葉子是1則真,是0則假。思路 這道題雖然是資料結構題,但其實用不到樹。我們可以根據x1 xn的序列根據它的指派生成它的十進位制值in...