Ich habe ein Programm online gefunden, das einen Binärbaum in der Ebenenreihenfolge durchläuft. Der Code unten geht und erzeugt die gewünschte Ausgabe:Erklärung dieser Bedingung im Binärbaum
class Solution {
public:
std::vector< vector<int>> res;
void buildVec(TreeNode* root, int level) {
if(root==NULL)
return;
if(res.size()==level)
res.push_back(vector<int>());
res[level].push_back(root->val);
buildVec(root->left, level+1);
buildVec(root->right, level+1);
}
vector<vector<int>> levelOrder(TreeNode* root) {
res.clear();
buildVec(root, 0);
return res;
}
};
Was ich nicht verstehe, ist die Aussage: if(res.size()==level)
. Was genau erreicht diese Aussage? Wenn der Level 2 ist, kann es (maximal) 4 Elemente geben (da Level mit 0 beginnen), was größer ist als der Wert von Label (2). Also, wie funktioniert diese Aussage?
Edit: Also, wenn der Eingang:
3
/\
9 20
/\
15 7
dann wieder der Ausgang wäre
[
[3],
[9,20],
[15,7],
]
Super Erklärung, danke! :) –
@Ramesh Bitte auch upvote die Antwort, wenn es hilfreich war. – Corristo
Ich habe noch keine Upvote-Rechte. –