선 주문 트리 순회를 통해 배열을 채우려 고 시도하고 있습니다.하지만이 배열을 유지하는 방법을 실수로 생각합니다. 카운터가 올바르다. 내 toString() 메서드는 preorder 메서드를 호출하지만 null 만 출력합니다. 이 문제를 어떻게 해결할 수 있습니까? count++
와 preorder
의 후속 호출에 count
의 실제 값이 메서드에 전달되고 나중에count
이 증가하기 때문에BST에서 배열을 채울 때 재귀 적 메서드를 통해 카운트를 유지하는 방법
public AVLTreeNode[] preorder()
{
/*
* return an array of AVLTreeNodes in preorder
*/
AVLTreeNode[] preorder = new AVLTreeNode[size];
int count = 0;
return preorder(root, count, preorder);
}
private AVLTreeNode[] preorder(AVLTreeNode data, int count, AVLTreeNode preorder[])
{
if (data == null)
{
return preorder;
}
preorder[count] = data;
if (data.getLeft() != null)
{
preorder(data.getLeft(), count++, preorder);
}
if (data.getRight() != null)
{
preorder(data.getRight(), count++, preorder);
}
return preorder;
}
이제 출력이 나오지만 올바른 것은 아닙니다. 입력은 {3,1,5,2}로, 결과는 {3,1,5, null}입니다. 나는 나무에 2라는 값이 들어 있는지 확인했다. 왜 1의 올바른 아이를 놓칠까요? – scraig