2
class Node {
    Node parent;
    Node left;
    Node right;
    int value;

    Node (int value) {
        this.value = value;
        this.parent = null;
        this.left = null;
        this.right = null;
    }
}

class TreeofNodes {
    Node insert (Node root, Node node) {
        if (root == null)
        {
            root = node;
            return root;
        }

        Node cur    = root;
        Node father = root;

        while(cur != null)
        {
            father = cur;
            if (cur.value > node.value)
                cur = cur.left;
            else
                cur = cur.right;
        }
        if(father.value > node.value)
            father.left  = node;
        else
            father.right = node;

        node.parent = father;

        return node;
    }

    void Inorder (Node n) {
        if (n == null)
           return;
        Inorder (n.left);
        System.out.print (n.value + " ");
        Inorder (n.right);
    }
}

class binarySearchTree {

public static void main (String [] args) {

    int A[] = {6, 8, 5, 3, 7, 9, 1};

    TreeofNodes obj = new TreeofNodes ( );

    Node root = null;
    Node n = new Node (A[0]);
    root = obj.insert (root, n);

    Node Croot = root;

    for (int i = 1; i < 7; i++)
    {
        n = new Node (A[i]);
        Croot = obj.insert (Croot, n);
    }

    System.out.println ("============ Inorder ============");
    obj.Inorder (root);
  }
}

Inorderメソッドを呼び出すと、出力は次のようになります。

 1   3   5   6   7   8   9

しかし、それは

 6   3   7   1   9   5   8

挿入方法が間違っていると思います。

誰かが私がどこが間違っているのか、そしてどうすればそれを解決できるのか教えてもらえますか?

4

1 に答える 1

3

関数は、の代わりに最後にinsert戻ります。変化する:noderoot

    return node;

    return root;
于 2013-01-23T22:11:18.547 に答える