Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: hàm in cây bị lỗi khi viết bằng class, ai giúp em với.

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    8

    Mặc định hàm in cây bị lỗi khi viết bằng class, ai giúp em với.

    Mọi người giúp em sửa lỗi bài này với, và giải thích giùm em, tại sao lại bị lỗi.
    Chủ yếu là hàm void Print(Node *t,int m=1) bị lỗi thôi, sửa giúp em.


    tree.h
    Code:
    #if !defined(_TREE_H__)
    #define _TREE_H__
    
    
    #include <iostream.h>
    
    struct Node
    {
    	int data;
    	Node* left;
    	Node* right;
    };
    
    class Tree  
    {
    public:
    	Node* Root;
    public:
    	void Print(Node *t,int m=1);
    	void AddNode(int data);
    	void RemoveAll();
    	Node* TSearch(int data);
    	Node* Search(int data);
    	Tree();
    	virtual ~Tree();
    
    private:
    	Node*& Search(Node*& Root, int data);
    	void DeleteTree(Node*& Root);
    };
    
    #endif

    tree.cpp

    Code:
    #include<iomanip.h>
    #include<iostream.h>
    
    #include "Tree.h"
    Tree::Tree()
    {
    	Root=NULL;
    }
    
    Tree::~Tree()
    {
    	RemoveAll();
    }
    
    Node*& Tree::Search(Node*& Root, int data)
    {
    	if(Root!=NULL)
    	{
    		if(Root->data==data)
    			return Root;
    		if(data<Root->data)
    			return Search(Root->left,data);
    		if(Root->data<data)
    			return Search(Root->right,data);
    	}
    	return Root;
    }
    
    Node* Tree::Search(int data)
    {
    	if(Root!=NULL)
    	{
    		if(Root->data==data)
    			return Root;
    		if(data<Root->data)
    			return Search(Root->left->data);
    		if(Root->data<data)
    			return Search(Root->right->data);
    	}
    	return Root;
    }
    
    Node* Tree::TSearch(int data)
    {
    	Node* p=Root;
    	while(p!=NULL)
    	{
    		if(p->data==data)
    			return p;
    		if(data<p->data)
    			p=p->left;
    		else
    			p=p->right;
    	}
    	return p;
    }
    
    void Tree::DeleteTree(Node*& Root)
    {
    	if(Root==NULL)
    		return;
    	DeleteTree(Root->left);
    	DeleteTree(Root->right);
    	delete Root;
    	Root=NULL;
    }
    void Tree::RemoveAll()
    {
    	DeleteTree(Root);
    }
    
    
    
    void Tree::AddNode(int data)
    {
    	Node* &p=Search(Root,data);
    	if(p!=NULL)
    		return;
    	p=new Node;
    	p->data=data;
    	p->left=NULL;
    	p->right=NULL;
    }
    
    
    
    
    void Tree::Print(Node *t,int m=1)
    {
    	if(t!=NULL)
    	{
    		Print(t->left,m+1);
    		cout<<endl<<setw(4*m)<<t->data;
    		Print(t->right,m+1);
    	}
    }
    main.cpp

    Code:
    #include <iostream.h>
    #include<conio.h>
    #include "tree.h"
    void main()
    {
    	Tree t;
    	t.AddNode(8);
    	t.AddNode(4);
    	t.AddNode(12);
    	t.AddNode(6);
    	cout<<"Cay:\n\n";
    	t.Print(t.Root);
    	t.RemoveAll();
    
    	cout<<endl;
    	getch();
    }
    Không Có Gì Hạnh Phúc Hơn Lập Trinh.

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Bạn định nghĩa lại prototype cái phương thức Print là ..void Tree::Print(Tree t,int m=1) xem sao . Lời gọi phương thức thì thay vì t.root bạn truyền vào t thôi.
    Hoặc là bạn ko cần phải định nghĩa thêm Đối số Tree t vì đã có con trỏ this nó làm việc này rồi.
    Ở thân phương thức cứ truy xuất t.root mà làm việc .
    Bạn thử lại xem sao

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    8

    Bạn nói rõ hơn được không, mình không hiểu lắm về cách sử dụng class này, mới biết dùng àh.
    Không Có Gì Hạnh Phúc Hơn Lập Trinh.

Các đề tài tương tự

  1. Bài tập C++ Giúp mình về hàm friend từ class tới class.
    Gửi bởi Ninjakyo trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 09-04-2012, 08:53 PM
  2. Class quản lí học sinh THPT viết bằng C#. Giúp mình sửa lỗi?
    Gửi bởi nguyen0cntt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 24-02-2011, 02:16 PM
  3. Viết code trên Form và viết code trong class có gì khác nhau.
    Gửi bởi hocCsharp trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 21
    Bài viết cuối: 21-01-2011, 10:37 PM
  4. Truy cập biến từ class này sang class kia xin giúp
    Gửi bởi baotran trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 02-12-2010, 09:20 AM
  5. học cách viết class !
    Gửi bởi calme1202 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 03-06-2008, 06:55 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn