采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
bobobo老师, 为什么你写层次遍历的时候把实现都放在了public中, 有关Node的都是传一个参数到private中的函数实现阿 什么时候要放在public, 什么时候放private?
public 就是留给用户调用的接口;
private 就是希望对用户屏蔽的函数,不希望用户通过类对象进行调用:)
和 Node 相关的函数,都是私有的,是因为 Node 本身就是私有的,是用户不知道的细节。
用户使用你的BST类,不需要知道里面用了什么Node,是链式结构还是数组结构,Node里面有几个指针,存了哪些信息。用户可以使用你的BST类存储,读取,改写,删除内容,就可以了。
可以根据这个原则,在研究一下,课程的代码,哪些我设置成了public,哪些我设置成了private。为什么?
什么时候 public,什么时候 private,不是语法规定的,是设计者自己规定的。但原则是上面的原则:)
继续加油!:)
```cpp public: void levelOrder(){ levelOrder(root); } private: void levelOrder(Node* root){ queue<Node*> q; q.push(root); while(!q.empty()){ Node* node = q.front(); q.pop(); cout<<node->key<<endl; if(node->left) q.push(node->left); if(node->right) q.push(node->right); } } ``` 那老师这样写会不会更好? 我会继续加油的
可以,但其实并不需要。因为我们课程中的 levelOrder 不需要用户传来参数,所以用户调用这个接口是感受不到 Node 的存在的,可以达到屏蔽 Node 的目的:)
我还是想问一下, 那前中后序遍历这样写是不是也没必要 ```cpp public: void preOrder(){ preOrder(root); } private: void postOrder(Node* node){ if(node != NULL){ preOrder(node->left); preOrder(node->right); cout<<node->key<<endl; } } ```
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
9.5k 21
6.1k 3
5.6k 5
1.8k 18
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号