2016-08-12 1 views
-3

私はバイナリツリーを作りたいのですが、ツリーに整数値を挿入することさえできないのは残念です。問題は私がクラスを作成したことです。datatypeの下に3つのプロパティが挿入されています。それらは:static datatype left,static datatype right,static int valueです。参照型またはクラス型の変数は、指定された値を受け入れることができません

私は、ユーザー定義のデータ型としてクラスを作成しました:

public class datatype 
{ 
static datatype left,right; 
static int value=0; 
} 

マイバイナリツリークラスは次のとおりです。

datatype root,parent,node; 

public int insert(int data) 
{  
    node.value=data; //using debugger found, node.value remain null even 
    node.left=null; // after insertion of data into it.....That's my 
    node.right=null; // problem  
    try{ 
     if(root==null) 
      root=node;       
     else   
     { 
      parent=root; 
      insert(node);    
     } 
     parent=root; 
     return 1; 
    } 
    catch(Exception e) 
    { 
     return 0; 
    }  
} 

private void insert(datatype node) 
{  
    if(node.value<=parent.value) 
    { 
     if(parent.left==null) 
     { 
      parent.left=node; 
      return; 
     } 
     else 
     { 
      parent=parent.left; 
      insert(parent); 
     } 
    } 
    else 
    { 
     if(parent.right==null) 
     { 
      parent.right=node; 
      return; 
     } 
     else 
     { 
      parent=parent.right; 
      insert(parent); 
     } 
    } 
} 
+0

はなぜ 'left'と' 'right' static'、次のとおりです。また

は、あなたが静的フィールドを使用したい方法と理由をよく読んでいますか? 'datatype'の代わりに' Datatype'を書いてください! – luk2302

答えて

0

すべての単一ノードニーズ以来dataType静的でインスタンスフィールドを保持しないでください。それ自身left,rightおよびvalueである。インスタンスフィールドは決して静的であってはなりません。

ユーザー定義型を使用する場合は、汎用型(例:https://docs.oracle.com/javase/tutorial/java/generics/types.html)を参照してください。 https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html