Hiển thị kết quả từ 1 đến 6 / 6
  1. #1
    Tham gia
    14-04-2006
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts

    [Algorithme] Tree general trong Java !

    Chào các anh chị trong diễn đàn , em mới học Java và đang học đến phần cây , có liên quan đến HashSet , nhưng em vânc chưa hiểu rõ về khái niệm này lắm. Yêu cầu của bài là xây dựng một Class nhằm miêu tả về cây tổng quát ( Tree General ) : là một cây mà số con trong mỗi nhánh là tuỳ ý .

    Về ý tưởng là chúng ta phải xây dựng 2 lớp Foret và Tree .

    class Tree {
    private Object goc; // Goc cua cay
    private Foret caycon; // Cay con
    public int hashCode () { return goc.hashCode () ; }
    public boolean equals ( Object o ) { return o instanceof Tree && goc.equals (((Tree) o ).goc);}

    ............
    ...............

    Trong đó Foret là một tập hợp chứa các Tree bên trong.

    Do chưa hiểu rõ lắm về HashSet nên em vẫn chưa có giải pháp cho class Foret . Ví dụ :

    class Foret {
    Set s = new HashSet();
    ..........

    Nhưng làm thế nào để thiết lập kiểu của HashSet này là Tree .

    Một cấu hỏi nữa là , chúng ta có thể duyệt cây này bằng cách nào. Em mới chỉ thực hiện đệ quy trên Binary Tree thôi , còn cái này thi đang nghiên cứu .

    Mong các bác giúp em sớm !
    Quote Quote

  2. #2
    Tham gia
    05-05-2006
    Bài viết
    7
    Like
    0
    Thanked 0 Times in 0 Posts
    HashSet là dạng cây thường dùng để chứa dữ liệu không trùng giá trị. Ngược lại thì dùng treeSet, TreeSet lưu kết quả theo thứ tự.

    Bạn có thể tham khảo tài liệu API cua Java: http://java.sun.com/j2se/1.4.2/docs/...l/HashSet.html

    Mình search trên google có tìm thấy 1 ví dụ:
    http://www.allapplabs.com/java/hashs...et_classes.htm

    Example
    import java.util.*;

    public class HashTreeSetEx{
    public static void main (String args[]){

    Set set = new HashSet(){
    set.add("one");
    set.add("two");
    set.add("three");
    set.add("four");
    set.add("one");
    System.out.println(set);
    Set sortedSet= new TreeSet(set);
    System.out.println(SortedSet);
    }
    }

    Ví dụ này cho ra kết quả:
    [one, two, three, four] -> HashSet
    [four, one, three, two] -> TreeSet (theo thứ tự A,B,C,D...)

    Nếu tìm kiếm trong HashSet thì dùng: contains(Object o).

    Bạn có thể tìm được nhiều hàm hơn trong API cua java.sun.com.

  3. #3
    Tham gia
    11-09-2009
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    minh muốn hỏi về cách khởi tạo cây trong java thi phải lam sao ha các bạn?

  4. #4
    Tham gia
    01-06-2007
    Bài viết
    2,148
    Like
    0
    Thanked 6 Times in 5 Posts
    Cây? Trong Java đã có sẵn mấy cấu trúc dữ liệu được thiết kế chạy ngon lành gòi: List, Set, Map.
    Nếu muốn tự tạo cây để học thuật giải, thì có thể làm vẫn được, chủ yếu thuật giải thôi mà.

  5. #5
    Tham gia
    20-01-2009
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts
    Emachines D732-352G32Mn (018)

    [=========> Bổ sung bài viết <=========]

    • Vẽ một quả bóng rơi từ trên xuống dưới trên màn hình,
    • Vẽ một hình chữ nhật phía dưới màn hình và di chuyển nó sang trái và phải bằng xử lý các phím mũi tên,
    Được sửa bởi trunghieuwelcome lúc 10:48 ngày 06-12-2010 Reason: Bổ sung bài viết

  6. #6
    Tham gia
    18-05-2010
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts

    Vẽ quả bóng rơi từ trên xuống và bên dưới và hcndi chuyển sang hai bên

    import javax.microedition.midlet.*;

    import javax.microedition.lcdui.*;

    import javax.microedition.lcdui.game.*;


    class DiChuyenhcn extends GameCanvas implements CommandListener,Runnable {

    Command c1 = new Command("Thoat", Command.EXIT, 1);

    int dem=0, x1=100, y1=0,dy=20,dx=20, dx1=20, dy1=20, x=100,y=getHeight() ;

    Graphics g = getGraphics(); //B1 của quá trình vẽ


    DiChuyenhcn(){

    super(false);

    hamvehcn();

    new Thread(this).start();

    addCommand(c1); //thêm lệnh vào màn hình

    setCommandListener(this); //đăng ký xử lý lệnh

    }


    void hamvehcn(){

    g.setColor(0, 0, 255);

    g.drawRect(x,y-32,45,15);

    flushGraphics();

    }

    void hamxoahcn(){

    g.setColor(255, 255, 255);

    g.drawRect(x,y-32,45,15);

    flushGraphics();

    }

    public void keyPressed(int k){ //hàm nhấn phím

    hamxoahcn();

    int a = getGameAction(k);

    if(a==LEFT && x>0) x -= dx;

    if(a==RIGHT && x<getWidth()-45) x += dx;

    hamvehcn();
    if(a==FIRE) vebong(10,10);

    }



    public void keyRepeated(int k){ keyPressed(k);
    }

    public void vebong(int x1, int y1)

    {

    g.setColor(255, 0, 0);

    g.fillArc(x1, y1, 20, 20, 0, 360);

    flushGraphics();

    }


    public void xoabong(int x1, int y1 )

    {

    g.setColor(255, 255, 255);

    g.fillArc(x1, y1, 20, 20, 0, 360);

    flushGraphics();

    }




    public void commandAction(Command c,Displayable d){ //hàm xử lý

    if(c==c1){


    g.setColor(0, 0, 255);

    g.drawString("Ket qua"+dem, 10, 10, g.LEFT+g.TOP);

    flushGraphics();

    }

    }

    public void bongroi(int x1, int y1){

    while(true)
    {


    vebong(x1,y1);

    try{ Thread.sleep(70); }catch(Exception e){}

    xoabong(x1,y1);
    // x1+=dx1;
    if(x1<0||x1>getWidth()-10) dx1=-dx1;

    y1+=dy1; if((x<=x1 && x1<=x+45)&&(y1>=getHeight()-42)|| (y1<=0))dy1=-dy1;

    if((x<=x1 && x1<=x+45)&&(y1>=getHeight()-42)) dem=dem+1;


    }

    }


    public void run(){

    bongroi();
    }

    }

    public class bai1 extends MIDlet{

    public void startApp()
    {

    Display.getDisplay(this).setCurrent(new DiChuyenhcn());

    }

    public void pauseApp(){}

    public void destroyApp(boolean t){}

    }

Bookmarks

Quy định

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