f*t
2 楼
最近在练习用Tree Iterator实现Tree的非递归遍历。想练习一下begin()/end()/++的
版本。code如下:
结果在operator !=那里出了问题:
Line 45: passing ‘const TreeIterator’ as ‘this’ argument of ‘TreeNode*
TreeIterator::getRoot()’ discards qualifiers [-fpermissive]
求教这个怎么fix? 多谢啦 =)
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class TreeIterator {
stack s;
TreeNode *root_;
public:
TreeNode* getRoot() {
return root_;
}
TreeIterator(TreeNode *root) {
if (root) {
s.push(root);
}
}
TreeIterator begin() {
TreeIterator iterator(root_);
return iterator;
}
TreeIterator end() {
TreeIterator iterator(NULL);
return iterator;
}
TreeIterator operator++() {
TreeNode *root = s.top();
s.pop();
if (root->right) {
s.push(root->right);
}
if (root->left) {
s.push(root->left);
}
root_ = s.empty() ? NULL : s.top();
TreeIterator iterator(root_);
return iterator;
}
bool operator!=(const TreeIterator &it) {
return getRoot() != it.getRoot();
}
};
class Solution {
public:
vector preorderTraversal(TreeNode *root) {
vector vec;
TreeIterator iterator(root);
for (TreeIterator it = iterator.begin(); it != iterator.end(); ++it) {
vec.push_back(*it);
}
return vec;
}
};
版本。code如下:
结果在operator !=那里出了问题:
Line 45: passing ‘const TreeIterator’ as ‘this’ argument of ‘TreeNode*
TreeIterator::getRoot()’ discards qualifiers [-fpermissive]
求教这个怎么fix? 多谢啦 =)
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class TreeIterator {
stack
TreeNode *root_;
public:
TreeNode* getRoot() {
return root_;
}
TreeIterator(TreeNode *root) {
if (root) {
s.push(root);
}
}
TreeIterator begin() {
TreeIterator iterator(root_);
return iterator;
}
TreeIterator end() {
TreeIterator iterator(NULL);
return iterator;
}
TreeIterator operator++() {
TreeNode *root = s.top();
s.pop();
if (root->right) {
s.push(root->right);
}
if (root->left) {
s.push(root->left);
}
root_ = s.empty() ? NULL : s.top();
TreeIterator iterator(root_);
return iterator;
}
bool operator!=(const TreeIterator &it) {
return getRoot() != it.getRoot();
}
};
class Solution {
public:
vector
vector
TreeIterator iterator(root);
for (TreeIterator it = iterator.begin(); it != iterator.end(); ++it) {
vec.push_back(*it);
}
return vec;
}
};
l*2
3 楼
有啥用?实验室做UV radiation?
z*g
4 楼
TreeNode* getRoot() const {...}
f*t
6 楼
多谢!现在fixed. :)
inline bool operator!=(const X& lhs, const X& rhs){return !(lhs == rhs);}
看来在!=里面,左右两边的值都得是cost才行。
inline bool operator!=(const X& lhs, const X& rhs){return !(lhs == rhs);}
看来在!=里面,左右两边的值都得是cost才行。
p*e
7 楼
in了300个,以后出门防太阳用。
相关阅读
有了经验以后,经验似乎成了累赘,有人有同感吗?又要开始干阿3了,大家给点意见?36岁想再考证,重新应聘,还靠谱吗?求问入职延迟有问题么靠,FB -20%, 174了,怎么回事? (转载)遇到HR临时更改面试时间,直接拒绝了奶奶的,老板说升一级, 但奖金股票要少给提前上班遇车祸不算工伤凉人心,想起赠车老板来部门都是华裔,上司却坚持讲英文!生完孩子以后怎么选择工作呢?换组求助牛逼的公司都是主动加班的【工作机会】人工智能产品相关PM职位 (转载)新来的女同事,竟然要天天搭顺风车没有其他offer,如何协商工资?我朋友Phd刚毕业纽约非女收入仅白男一半,性别、种族歧视明显这几年的工作,感觉每天只有一两个小时在用脑子 (转载)你就是来美国谋生的,你和劳模有啥区别? (转载)湾区front end engineer的需求量大吗?