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);
}
}
ありがとうございます。
オウキー、私があなたの言ったことをして、今働いています、ありがとう。しかし、Javaが参照渡しであれば、 'parent = new Node(val)'は動作しませんか?それ以前の 'parent'のアドレスは' null'だったので、 'parent'のアドレスは' new Node(val) 'でなければなりません。 – scarface
@scarface - 'parent'への参照は**ローカル**変数です。それを変更しても構造は変わりません。 – OldCurmudgeon
私は混乱しています。 – scarface