30/09/2018, 16:47
trợ giúp!cây nhị phân dùng danh sách liên kết
#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;
typedef struct node{
int item;
struct node *left;
struct node *right;
}tree_node;
tree_node root;
int check_null(tree_node *root){
if(root==NULL)
return 1;
return 0;
}
tree_node *creat_node(int x){
tree_node *p;
p=new node;
p->item=x;
p->left=p->right=NULL;
return p;
}
tree_node *insert_node(tree_node *root , int x)
{
tree_node *p,*r;
p=creat_node(x) ;
if(root == NULL)
{
root = p;
}
else
{
r=root;
while(root!=NULL)
{
if(x < root ->item)
{
root = root->left;
}
else
if (x >root ->item)
{
root = root->right;
}
}
if(x<r->item)
r->left=p;
else
if(x>r->item)
r->right=p;
return p;
}
}
void in_put(tree_node *root){
int x;
ifstream f;
f.open("test.txt");
while(!f.eof()){
f>>x;
insert_node(root,x) ;
}
}
void PreOrder(tree_node *root)
{
if(root!=NULL)
{
cout<<root->item;
PreOrder(root->left);
PreOrder(root->right);
}
}
void InOrder(tree_node *root)
{
if(root!=NULL)
{
InOrder(root->left);
cout<<root->item;
InOrder(root->right);
}
}
void PostOrder(tree_node *root)
{
if(root!=NULL)
{
PostOrder(root->left);
PostOrder(root->right);
cout<<root->item;
}
}
main(){
tree_node *root;
root=new node;
root->left=root->right=NULL;
in_put(root);
PreOrder(root);
InOrder(root);
PostOrder(root);
}
Bài liên quan
mình chạy nó không hiển thị ra số mà hiển thị ra địa chỉ là sao nhỉ?
Hồi trước mình có làm cái class về Binary search tree, bạn có thể coi để tham khảo phần print_tree.
Còn mấy cái convert Infix to postFix gì đó bị lỗi, bạn đừng quan tâm.
cảm ơn bạn đã share.mình sẽ tham khảo.mong các bạn sửa bài code dùm mình vì bài code do chính tay mình viết thì mình sẽ hiểu hơn và nhớ lâu hơn
check_null
không để làm gì?tree_insert
root
thay đổi, phần insert khiroot!=NULL
bị sai: sửa lạiin_put(tree_node * root)
=>in_put(tree *& root)
tree_node * root=NULL;