1
저는 최근에 C++에서 Java로 옮겼습니다. 이제는 C++에서 포인터를 사용해야하는 데이터 구조로 놀고 있습니다.Java BST 재귀
지금 Java에서 BST를 만들고 있는데, inserting
을 Tree로 재귀를 사용하고 예상대로 작동하지 않습니다. 이 코드는 Node
과 val = 5
만 저장합니다. 어떤 조언을 해줄 수 있습니까?
public class Main
{
public static void main(String [] args)
{
BST<Integer> bst = new BST<Integer>();
bst . add(5);
bst . add(10);
}
}
public class BST<T extends Number & Comparable<T>>
{
private Node root;
private class Node
{
private T val;
private Node left;
private Node right;
Node(T val)
{
this . val = val;
left = null;
right = null;
}
}
public BST()
{
root = null;
}
public BST(T val)
{
root = new Node(val);
}
public void add(T val)
{
if(root == null)
root = new Node(val);
else
add(root, val);
}
private void add(Node parent, T val)
{
if(parent == null)
parent = new Node(val);
else if(val . compareTo(parent . val) < 0)
add(parent . left, val);
else if(val . compareTo(parent . val) > 0)
add(parent . right, val);
}
}
감사합니다.
오우키, 나는 네가 한 말대로 했어. 지금 일하고있어, 고마워. 그러나 자바가 참조에 의한 것이라면'parent = new Node (val)'이 작동하지 않아야합니까? 이전에'parent'의 주소는'null' 이었으므로 이제'parent'의 주소는'new Node (val)'이어야합니다. – scarface
@scarface - 'parent'에 대한 참조는 ** local ** 변수입니다. 그것을 변경하면 구조가 변경되지 않습니다. – OldCurmudgeon
나는 혼란 스럽다. – scarface