按字母顺序排列的二叉树

Alphabetically ordered binary tree

本文关键字:二叉树 排列 顺序      更新时间:2023-10-16

我必须编写一些代码,自动将单词按字母顺序添加到二进制树中。我知道我必须放入循环和更多if语句,我只是不知道在哪里
如果单词按字母顺序较小,则应向左,否则应向右。

这是我迄今为止的代码:

struct node
{
  string info;
  node* right;
  node* left;
}; //closes node
class States
{
 private:
  node* start;
 public:
  void insert();
  void delete();
  void list();
  void search();
  States();
}; //closes States class
States::States()
{
  start = new node;
  start -> left = NULL;
  start -> right = NULL;
  start -> info = ' ';
}
void States::insert()
{
  string state;
  char c;
  node *temp, *p, *s;
  p = start;
  s = start;
  cout<<"Please enter the state you want to add: ";
  cin>>state;
  if(s -> info == ' ')
    {
      s -> info = state;
      cout<<"Added state "<<state<<"to the list.n";
      cout<<"Ready to continue? (enter y)";
      cin>>c;
      return;
    }//close if
 else
    {
      temp = new node;
      temp ->info = state;
      if(s->info > temp->info)
        {
          p = p-> left;
          if(
          p = s -> left;
        }//close if
    }//close else
}//close insert function

让我们从循环开始。这段代码有点接近,您几乎可以在insert方法中只在if/else周围添加一个while(true) {}循环。

但是,在用户多次进入同一状态的情况下,您会遇到一些问题(>为false,但您想转向另一个方向吗)。或者如果用户输入"会怎样。您需要在插入方法中添加一些错误检查。

你可能也不想每次输入else时都重新创建临时节点——每次插入东西时,你都会创建(我认为)d-1(其中d=树的深度)额外的节点。