C++ 二叉树-数据结构
树如何知道何时停止在一侧添加元素 我有代码,但无法掌握逻辑。我不熟悉编码,需要帮助C++ 二叉树-数据结构,c++,C++,树如何知道何时停止在一侧添加元素 我有代码,但无法掌握逻辑。我不熟悉编码,需要帮助 class node { public: int data; node* left; node* right; node(int d) { data = d; left = NULL; right = NULL; } }; node* buildtree() { int d; cin >>
class node {
public:
int data;
node* left;
node* right;
node(int d)
{
data = d;
left = NULL;
right = NULL;
}
};
node* buildtree()
{
int d;
cin >> d;
if (d == -1)
return NULL;
node* root = new node(d);
root->left = buildtree();
root->right = buildtree();
return root;
}
o/p和一切正常,但如何以及为什么
树如何知道何时停止在一侧添加元素
多亏了
当您输入-1时,递归停止
示例:
- 如果调用buildtree()并输入-1,则返回空树(空指针)
- 如果调用buildtree()并输入0,然后输入-1,然后输入-1,返回一个节点,其中包含数据0,但没有左/右(它们是空指针)
- 如果调用buildtree()并输入0,然后输入1,然后输入-1,然后输入-1,然后输入-1,返回包含数据0的节点,该节点有一个包含数据1的左节点,该节点没有左/右节点,返回节点没有右节点
- 等
Node * tree = nullptr;
void build_tree()
{
int number;
while (std::cin >> number)
{
insert(tree, number);
}
}
insert
函数将根据number
将值插入到树中
您的函数是遍历树并插入用户键入的任何内容;不维护树中节点的顺序。请阅读有关数据结构的书籍。键入“-1”时“取决于树结构。在某些树上,当新节点小于当前树节点时,会将其插入到左子树上,否则会将其放置在右子树上。二叉树可以在左子树上插入新值(如果较大)。
Node * tree = nullptr;
void build_tree()
{
int number;
while (std::cin >> number)
{
insert(tree, number);
}
}