如何解决我正在尝试使用类在 C++ 中实现一棵树
我只是想实现一个 TreeNode 类,它的工作原理类似于树实现的结构节点。
除了在 inorder 遍历开始时包含 0 的输出之外,一切正常。谁能给我解释一下为什么会这样?
输入:
22,1,2,3,5,4,11,20,19,24,21
输出:
0 1 2 3 4 5 11 19 20 21 22 24
#include <bits/stdc++.h>
using namespace std;
class TreeNode{
public:
int data;
TreeNode* left;
TreeNode* right;
TreeNode(){
left = NULL;
right = NULL;
}
TreeNode(int val){
data = val;
left = NULL;
right = NULL;
}
};
void insertInorder(TreeNode* cur,int d){
if(d <= cur->data){
if(cur->left == NULL)
cur->left = new TreeNode(d);
else
insertInorder(cur->left,d);
}
else{
if(cur->right == NULL)
cur->right = new TreeNode(d);
else
insertInorder(cur->right,d);
}
}
TreeNode* makeTree(vector<int> v){
TreeNode* root = NULL;
for(int start = 0; start <= v.size(); start++){
if(start == 0){
root = new TreeNode();
root->data = v[0];
}
insertInorder(root,v[start]);
}
return root;
}
void printInorder(TreeNode* node)
{
if (node == NULL)
return;
/* first recur on left child */
printInorder(node->left);
/* then print the data of node */
cout << node->data << " ";
/* Now recur on right child */
printInorder(node->right);
}
int main(){
vector<int> x = {22,21};
TreeNode* r = makeTree(x);
printInorder(r);
return 0;
}
编辑:
致将来访问此问题的人。更好的做法表明我们不应该使用
#include <bits/stdc++.h>
using namespace std;
使用命名空间 std 可能会导致代码中未来的命名空间冲突。供参考here。 我犯了同样的错误,但从现在开始我不会这样做了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。