01/10/2018, 16:13
Lỗi hàm thêm Node vào cây nhị phân
Em đang viết hàm add_Node để thêm Node vào cây nhị phân nhưng bị lỗi không add Node được khi Node gốc Root khác NULL. Mn check giúp e với ạ:
void add_Node(Node * &root,int x)
{
Node *newNode=new Node;
newNode->data=x;
newNode->left=NULL;
newNode->right=NULL;
if(root==NULL)
{
root=newNode;
}
else
{
Node *g=root;
while(g!=NULL)
{
if(g->data>x)
{
g=g->left;
}
else if(g->data<x)
{
g=g->right;
}
}
g=newNode;
}
}
Và đây là toàn bộ code của bài ạ
#include<iostream>
using namespace std;
//Nhap vao cay nhi phan cac so nguyen
//Xuat ra man hinh cac phan tu cua cay nhi phan
struct Node
{
int data;
Node *left;
Node *right;
};
void khoi_tao_cay(Node *root)
{
root=NULL;
}
void add_Node(Node * &root,int x)
{
Node *newNode=new Node;
newNode->data=x;
newNode->left=NULL;
newNode->right=NULL;
if(root==NULL)
{
root=newNode;
}
else
{
Node *g=root;
while(g!=NULL)
{
if(g->data>x)
{
g=g->left;
}
else if(g->data<x)
{
g=g->right;
}
}
g=newNode;
}
}
void xuat_cay_nhi_phan(Node *root)
{
if(root ==NULL) return;
else
{
cout<<root->data;
xuat_cay_nhi_phan(root->left);
xuat_cay_nhi_phan(root->right);
}
}
int main()
{
Node *root=NULL;
for(int i=0;i<6;i++)
{
int a;
cin>>a;
add_Node(root,a);
}
xuat_cay_nhi_phan(root);
return 0;
}
Bài liên quan
g
không nằm trong câyg được tạo ra như 1 biến chạy để đến phần tử cuối của cây trước khi thêm g vào cây mà a.
Sao g lại không thuộc cây nhỉ??
Bạn chỉ cho
g
trỏ vào node thôi chứ đâu có sửa gì trong node đâu. Mà con trỏg
nó đã ở bên ngoài cây nên coi như bạn chưa làm gì cả.Thực ra hàm này viết đệ quy là đẹp nhất, có tham chiếu rồi còn dễ nữa.
Khi thêm Node vào danh sách liên kết đơn dùng cách này vẫn được mà nhỉ. Cũng là tạo 1 biến chạy đến chỗ node cần thêm rồi thêm vào mà nhỉ?
Cái này sao không áp dụng được cách ý ạ?
Ý bạn là kiểu
if(p->next == NULL) p->next = new NODE(var);
phải khôngNếu đúng thì bạn so sánh câu này với chỗ bạn gán xem sao.