我已经看到很多实现 BST 的代码(在线和一些书籍)。这些代码中的大多数都有如下结构:-
struct node{
int data;
struct node *left;
struct node *right;
};
class tree{
private:
node *root;
public:
//other helper function like insert,delete,display
};
但是,如果我想以更好的方式使用 OOPS,那么说我应该创建类节点 {}; 是否正确?而不是使用 struct ???
我在下面编写了代码,据我所知,它以更好的方式使用了 OOPS 概念。如果您发现设计有问题,请建议我进行任何更改:-
我的代码:-
#include<iostream>
using namespace std;
class node{
private:
int data;
node *left;
node *right;
public:
node()
{
data=0;
left=NULL;
right=NULL;
}
node(int val)
{
data=val;
left=NULL;
right=NULL;
}
int getData()
{
return data;
}
node* getLeft()
{
return left;
}
node* getRight()
{
return right;
}
void setData(int val)
{
data=val;
}
void setLeft(node *l)
{
left=l;
}
void setRight(node *r)
{
right=r;
}
};
class tree{
private:
node *root;
node *insertHelper(node*,int);
void inorderHelper(node*);
public:
tree()
{
root=NULL;
}
void insert(int val)
{
if(root==NULL)
{
root=new node(val);
return;
}
insertHelper(root,val);
}
void inorder();
};
node *tree::insertHelper(node *root,int val)
{
if(root==NULL)
{
root=new node(val);
return root;
}
else
{
if(root->getData() > val)
{
root->setLeft(insertHelper(root->getLeft(),val));
}
else
{
root->setRight(insertHelper(root->getRight(),val));
}
}
}
void tree::inorder()
{
if(root)
{
inorderHelper(root);
}
}
void tree::inorderHelper(node *temp)
{
if(temp!=NULL)
{
inorderHelper(temp->getLeft());
cout<<temp->getData()<<" ";
inorderHelper(temp->getRight());
}
}
通过创建类节点{}并将左、右、数据保留为私有成员,我是否做得太多并使事情变得复杂,或者这是一个好方法???