按字母顺序排列的二叉树
Alphabetically ordered binary tree
我必须编写一些代码,自动将单词按字母顺序添加到二进制树中。我知道我必须放入循环和更多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=树的深度)额外的节点。
相关文章:
- 从父数组测试用例构造二叉树失败
- 打印时有二叉树问题.用户输入不打印任何内容
- 试图找到二叉树的深度
- 二叉树结构平衡,使用递归时EXC_BAD_ACCESS
- 指向二叉树中新节点的指针
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- C++:如何计算二叉树中其值模块高度小于 2 的节点数?
- 二叉树级别顺序遍历在leetcode中
- 运行无限循环的最小二叉树问题
- 打印二叉树中的常见元素
- 二叉树基准测试结果
- 带有矢量重复值的二叉树打印出来
- 签入二叉树的函数是平衡C++
- 我有两棵二叉树.我想在不更改输入树的情况下深度复制两个二叉树的结果
- 如何计算给定数字在二叉树中出现的次数?
- 为什么我的二叉树会覆盖其根的叶子?
- 将二叉树的节点插入链表 (C++)
- 二叉树级别顺序插入 c++
- 在 C++ 中创建两个不同的二叉树时出现分段错误
- 按字母顺序排列的二叉树