繁体   English   中英

节点插入二叉树C ++

[英]Node insertion binary tree C++

我相信我实现了将新节点插入二叉搜索树的方法,但是我的测试脚本显示我的树处于有效状态

如果没有当前节点,则将代码插入树中的代码。

bool InsertRecursive(BinaryTreeNode* tree_node, int value) {

 if (tree_node == NULL)
 {

BinaryTreeNode * pNode = new BinaryTreeNode;
pNode->data = value;   // inserting node in
pNode->left_child = NULL;
pNode->right_child = NULL;
tree_node = pNode ; 
return true;
 }
       if(tree_node->data == value )   // if value already exists return false
{
 return false ; 
  }
   else if (tree_node->data > value)   // traverses to find the location for the value
    return InsertRecursive(tree_node->right_child, value);
  else 
return InsertRecursive(tree_node->left_child, value);

 }

将节点插入其中的实际方法

 bool BinaryTree::Insert(int value) {

if (InsertRecursive(head, value)) {
return true;
} else
  return false;
}

我的测试脚本怎么说

| 测试:插入

| | -插入“ 4”后应为大小为1的有效树

| | | 您建立了无效的树。 你为什么要对我这样?

| | -插入“ 2”后应为大小为2的有效树

| | | 您建立了无效的树。 您的代码需要一起生活

| | -插入“ 3”后应为大小为3的有效树

| | | 您建立了无效的树。 也许再喝咖啡?

| | -Insert(1)对于以下情况应返回false:[d2-1 d1-2 d2-3 d0-4 d2-5 d1-6 d2-7

] | | | 它返回了true。 不像老板 失败了!

所以问题应该出在我实际插入节点的位置,因为树被读取为有效。 但是,我不知道如何解决此问题,并希望获得一些指导。

当离开功能时,“ tree_node = pNode;” 没有效果。 如果要更改其值,请将tree_node类型更改为“ BinaryTreeNode **”

对于每种情况,当head等于nullptrtree_node等于nullptr时,必须将插入内容分为辅助方法和方法。 然后将您的实现添加到这两个实现中。

您的插入函数看起来像在正确的轨道上,因此,请考虑一下辅助函数中的两个函数和方法如何相似。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM