簡體   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