単純な実装クエリを実行していました。
したがって、次のコードを使用してBSTを作成します。
class Node{
int data;
Node left=null;
Node right=null;
Node link=null;
public Node(int d)
{
data=d;
}
public void append(int d)
{
Node n=this;
Node nval=new Node(d);
if(n==null)
{
n.data=d;
}
else
{ boolean done=false;
while(!done)
{
if(n.data<=d)
{
if(n.left==null)
{
n.left=nval;
done=true;
System.out.println("Data Entered "+nval.data);
}
else
{
n=n.left;
}
}
else
if(n.data>d)
{
if(n.right==null)
{
n.right=nval;
done=true;
System.out.println("Data Entered "+nval.data);
}
else
{
n=n.right;
}
}
}
}
}
}
今、私はそれに幅優先探索と深さ優先探索を適用し始めました。私はこれを行うことに真の問題を抱えていました。
DFSの場合、スタックに配置されている現在のノードの左右の値を右に追加する必要がありますか?これをどのようにプログラムしますか?リンクリストを使用してこれを行うのに問題がありましたか?誰かがデータ構造やポインタがどうあるべきか教えてもらえますか?
同じことがBFSでも起こります。以前にはっきりしていなかった場合、私の主な問題は、配列要素を削除してから、それをその子に置き換えることです。