以下代码永远不会执行if
部分...第一次调用level
为0
且view.size() - 1
为-1
,但{{{而是选择1}}选项..
else
根目录不是vector<int> rightSideView(TreeNode* root) {
vector<int> solution;
createView(root, solution, 0);
return solution;
}
void createView(TreeNode* root, vector<int>& view, int level) {
if(root == NULL)
return;
if(level > view.size() - 1) {
view.push_back(root->val);
}
else {
// only this part is executed
view[level] = root->val;
}
createView(root->left, view, level + 1);
createView(root->right, view, level + 1);
}
..实际上,如果我在NULL
括号中添加一条消息并且我有n个节点,它将打印n次。这种奇怪行为的原因是什么?
答案 0 :(得分:3)
view.size() - 1
为std::size_t
时,{p> view.size()
将是0
的最大数字,因为它是unsigned
。
使用
if (level > static_cast<int>(view.size()) - 1) {
或
if (level + 1 > view.size()) {