0

編集: ツリーにデータを追加する最良の方法は何ですか? 現在、10個の乱数を追加しています

BinTree<int> myTree = new BinTree<int>();
            int Value;

            Console.WriteLine("Inserting Values:  ");
            Random random = new Random();
            for (int i = 1; i <= 10; i++)
            {
                Value = random.Next(100);
                Console.Write(Value + " ");

               myTree.node(Value);
            }

しかし

> myTree.node(Value);

「エラー 1 ' BINTREE.BinTree ' には 'node' の定義が含まれておらず、タイプ 'BINTREE.BinTree' の最初の引数を受け入れる拡張メソッド 'node' が見つかりませんでした (using ディレクティブまたはアセンブリ参照?)」

 class BinTree<T> where T : IComparable
    {
        private NODE<T> root;

        public BinTree()
        {
            root = null;
        }

        public BinTree(NODE<T> node)
        {
            root = node;
        }



//order algorithms
        public void PreOrder()
        {
            PREORDER(root);
        }

        private void PREORDER(NODE<T> tree)                          
        {                                                                
            if (tree != null)
            {
                Console.Write(tree.Data);                              
                PREORDER(tree.Left);                                   
                PREORDER(tree.Right);                                  
            }
        }

        public void PostOrder()
        {
            POSTORDER(root);
        }

        private void POSTORDER(NODE<T> tree)                            
        {                                                                 
            if (tree != null)
            {
                POSTORDER(tree.Left);                                     
                POSTORDER(tree.Right);                                    
                Console.WriteLine(tree.Data);                             
            }
        }

        public void InOrder()
        {
            INORDER(root);
        }

        private void INORDER(NODE<T> tree)                              
        {                                                                 
            if (tree != null)
            {
                INORDER(tree.Left);                                       
                Console.WriteLine(tree.Data);                             
                INORDER(tree.Right);                                      
            }
        }
4

2 に答える 2

3

ここでいくつかのことが起こっています。特定のエラーはBinaryTree、ジェネリック引数なしでクラスを参照しているため、またはTクラスの定義に表示されているためです。

ただし、コードには他にも問題があります。

1) クラスをインスタンス化せずに非静的メンバーにアクセスすることはできません。AKA クラス定義は、操作したいデータを認識していません。

inOrder2)アクセスできないプライベート ルーチンを呼び出そうとしています。小文字と大文字の i の違いに注意してください。公衆に電話したいInOrder()

最終コードは次のようになります。

BinaryTree<int> myBinaryTree = new BinaryTree<int>();
myBinaryTree.InOrder();

ただし、このコードは、ツリーが未設定であるため (ルート ノードが null であっても) 機能しません。

編集:動作しないということは、出力が生成されないことを意味します。BinaryTree のクラス定義を見ると、ツリーを出力する方法を効果的にテストするために、ツリーにデータを入力する方法を追加する必要があります。

于 2012-08-08T18:37:18.610 に答える
0

ジェネリックであるため、 が表示されている場所で使用されるタイプを渡す必要があります。 は、タイプが重要なオブジェクトを通じて使用されるタイプです。

于 2012-08-08T18:37:35.730 に答える