1
import java.io.*;

class treeNode {

    int data;
    treeNode left = null;
    treeNode right = null;
    treeNode parent = null;

    treeNode (int value)
    {
        data = value;
    }
}



class treeNodes {

    treeNode root = null;         

    void insert (treeNode node)
    {
        if (root == null) // the value of root is always null
        {           
            root = node;            
            return;
        }

        treeNode cur = null;
        treeNode father = null;

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

        if (father.data > node.data)
            father.left = node;
        else
            father.right = node;

        node.parent = father;
    }

    void walkInorder (treeNode n)
    {
        if (n == null)
            return;

        walkInorder (n.left);
        System.out.print (n.data + " ");
        walkInorder (n.right);
    }
}

class binarySearchTree {

    public static void main (String [] args) {   

        treeNodes obj1 = new treeNodes ( );     

        System.out.println ("============ Array Elements ============"); 

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

        for (int i = 0; i < 6; i++)
        {
            treeNode node = new treeNode (A[i]);
            treeNodes obj = new treeNodes ( );
            obj.insert(node);                     
        }      

        System.out.println ("\n============ Inorder ============");
        System.out.println (obj1.root.data);
        obj1.walkInorder (obj1.root);        

    }
}

私は二分木を作ろうとしました、そして私が関数を挿入するために最初の値を送るとき、それはルートの値を変えるべきです

私の場合、ルートは決して変更されません。誰かが理由と方法を教えてくれます。

私の悪い英語でごめんなさい

4

2 に答える 2

1

ループ内forで、配列内の各アイテムに対して、新しいtreeNodesインスタンスを作成しています。新しいインスタンスを作成するたびに、rootが に設定されnullます。ループ
に次の変更を加えてみてください。for

    treeNodes obj = new treeNodes();

    for (int i = 0; i < 6; i++)
    {
        treeNode node = new treeNode(A[i]);            
        obj.insert(node);                     
    }

これにより、ループのすべてのステップで同じtreeNodesインスタンスが使用され、ルート ノードが正しく設定されます。コードには他にも問題がありますが、学習の一部は実験です。それでは、上記の問題を修正して、どうなるかお知らせください。

于 2013-03-02T21:21:04.607 に答える