輸入:28網易互娛 第二批筆試第二題 層次樹 調了我乙個小時,被自己蠢哭了。2 -1 -1
1 5 3
4 -1 6
2 -1 -1
3 0 2
2 4 7
7 -1 -1
2 -1 -1
821 6 -1
52 4 -1
80 0 3
31 7 -1
21 -1 -1
59 -1 -1
50 5 -1
48 -1 1
輸出:yes
no
大概題意是這樣,有乙個樹以上面的形式給出,第一行n為測試用例個數,第二行為節點數m,接下來m行為每個節點的資料,行數為節點編號,第乙個數為該節點的價值,接下來兩個數為該節點的左右子節點的編號,-1表示子節點為空,如果這棵樹每一層的價值的和比上一層嚴格大於,則輸出「yes」,否則輸出「no」。
思路:剛開始想的是每個節點先構造一顆小樹,後面將所有的小樹合併成一顆大樹,最後層次遍歷判斷是否符合條件,寫到樹的融合的時候有點寫不下去了,轉而換乙個思路,先找到根節點,也就是不可能為其他節點子節點的那個節點就是根節點,然後從根節點開始查詢子節點構造一顆完整的樹,然後層次遍歷判斷並輸出結果,以下是實現**
#include "stdafx.h"
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
struct treenode
};void preorderthis(treenode* root)
cout << root->val;
preorderthis(root->left);
preorderthis(root->right);
}void creattree(treenode* root_copy, int root_l, int root_r, vector& leftindex, vector& rightindex)
if(root_r != -1)
}int main()
for (int j = 0; j < m; j++)
for (int j = 0; j < m; j++)
}} for (int j = 0; j < m; j++)
}treenode* rootnode = new treenode(rootindex);
int root_l = leftindex[rootindex];
int root_r = rightindex[rootindex];
treenode* root_copy = rootnode;
creattree(root_copy, root_l, root_r, leftindex, rightindex);
preorderthis(rootnode);
treenode* root = rootnode;
queuenode.push(root);
int num1 = 1, num2 = 0;
int sum = 0, lastsum = -1;
treenode* node = nullptr;
bool isok = true;
bool ji_cen = false;
bool ou_cen = false;
while(num1 > 0 || num2 > 0)
if (node->right)
num1--;
}if (ji_cen && sum <= lastsum)
lastsum = sum;
sum = 0;
ji_cen = false;
while(num2 > 0)
if (node->right)
num2--;
}if (ou_cen && sum <= lastsum)
lastsum = sum;
sum = 0;
ou_cen = false;
} if (isok)
else
isok = true;
} return 0;
}
第二天在網上看了一下別人的思路,發現自己還是太年輕,為啥要糾結去構造那顆樹,直接每層遍歷查詢不就完了,唉!!!!!!!!!!!!!!!!!!!!!!!!!!!!
以下是摘取的別人的實現
#include #include #include using namespace std;
typedef struct _nodenode;
vectortree; //儲存結點
queuelevel; //層序遍歷用的queue
int main()
; // 判斷是否是root 沒有parent的就是root
for(int j=0;j>v>>l>>r;
node temp;
temp.id=j;
temp.val=v;
temp.lid=l;
temp.rid=r;
tree[j]=temp;
if(l!=-1)
hasp[l]=1;
if(r!=-1)
hasp[r]=1;
}int root;
for(int j=0;j參考:
[1]
華為勇敢星筆試題第二批(記錄)
測試用例1 輸入 tom,lily,tom,lucy,lucy,jack,tom,lucy 輸出 lucy 測試用例2 輸入 tom,lily,tom,lucy,lucy,jack,tom 輸出 tom 測試用例3 輸入 tom,lily,tom,lucy,lucy,jack,tom 違法字元 輸出...
一點資訊後端方向工程師筆試題第二批
一 不定項選擇題 1 關於http cookie的描述正確的是?a.cookie的超時時間通過服務端設定 b.session只能通過cookie的形式進行傳遞 c.一台計算機上安裝了多個瀏覽器,每個瀏覽器的cookie是單獨儲存的 d.cookie通過http header從瀏覽器傳送到服務端 2 ...
第二批37個城市設計試點名單公布
本報訊 第二批城市設計試點城市名單公布,上海 山東煙台 新疆阿勒泰等37個城市入選。近日,住房城鄉建設部下發通知,對做好試點工作提出要求。根據通知,試點工作自2017年7月開始,時間為2年。重點圍繞 創新管理制度 探索技術方法 傳承歷史文化 推動城市轉型 4方面內容開展工作。住房城鄉建設部要求,各試...