-2
안녕하세요 여러분, BST에 새 노드를 삽입하는 데 의심의 여지가 있습니다. addNode 모듈에서 BST에 요소를 삽입하려하지만 새 노드를 추가 할 때마다 에서 통과 한 동일한 루트 노드에 트리를 통과하지 않고 처음에 전달됩니다.이진 검색 트리 순회
이것은 내가 작성한 코드입니다.
#include<stdio.h>
#include<stdlib.h>
#include<cstdio>
#include<iostream>
using namespace std;
struct node
{
int data;
struct node *left;
struct node *right;
};
struct node* newNode(int data)
{
node* temp = (node*)malloc(sizeof(struct node));
//struct temp = new node;
temp->data = data;
temp->left = NULL;
temp->right = NULL;
return(temp);
};
int addNode(node *dest, node *root)
{
if(root == NULL)
{
cout<<"adding data to node for "<< dest->data<<endl;
root = dest;
cout<<"ROOT VALUE = root->data "<<root->data<<endl;
return 1;
}
if(dest->data > root->data)
{
cout<<"Traverse right for "<<dest->data<<endl;
addNode(dest, root->right);
}
else if(dest->data < root->data)
{
cout<<"Traverse left for "<<dest->data<<endl;
addNode(dest, root->left);
}
}
void printNodes(node *root)
{
if(root != NULL)
{
printNodes(root->left);
if(root->left != NULL && root->right != NULL)
std::cout<< root->data <<" ";
printNodes(root->right);
}
}
int main()
{
int i, j, k, flag;
int arr[6] = {4, 2,8, 1, 0, 10};
node *start = newNode(arr[0]);
for(i = 1; i < 6; i++)
{
node *newOne = newNode(0);
newOne->data = arr[i];
cout<<"NODE DATA - start->data "<<start->data;
if(addNode(newOne, start))
std::cout<<"\nNode added"<<endl;
}
printNodes(start);
return 1;
}
나무 개념 개념과 포인터 개념이 상당히 새로워졌습니다. 어떤 도움을 주셔서 감사 드리며 감사드립니다. 당신이 아니라 여기
, 같은 루트에 항상으로 추가되기 때문에
포인터에 대한 특별한 것은 없습니다. 포인터 매개 변수에 할당하는 것은'int' 매개 변수에 할당하는 것과 다르지 않습니다. – molbdnilo