比较奇怪的行为

时间:2017-01-04 17:19:56

标签: c++ undefined

以下代码永远不会执行if部分...第一次调用level0view.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次。这种奇怪行为的原因是什么?

1 个答案:

答案 0 :(得分:3)

view.size() - 1std::size_t时,{p> view.size()将是0的最大数字,因为它是unsigned

使用

if (level > static_cast<int>(view.size()) - 1) {

if (level + 1 > view.size()) {