나는 간단한 구현 쿼리를 가졌습니다. 처음 퍼스트 검색
그래서 나는 다음과 같은 코드를 사용하여 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에서 발생합니다. 이전에 명확하지 않은 경우, 주요 문제는 배열 요소를 제거한 다음 해당 요소를 자식으로 대체하는 것입니다.
'if (n == null) {n.data = d; }'당신은'NullPointerException'을 얻으 려하고 있습니까? 아니면 오타입니까? – ApproachingDarknessFish
@ValekHalfHeart - 걱정하지 말고, 노드'= this;'가 나오기 몇 줄 전에'null '이 될 수 없습니다. –
그래, 난 그냥있어! 감사! –