Java 및 C++에서 BST가 구현되는 방식을 비교하려고합니다. 자바에서는 노드는바이너리 검색 트리는 포인터없이 Java에서 어떻게 작동합니까?
class Node{
int data;
Node left;
Node right;
}
추천하고 C에 보일 것이다 ++는 다음과 같습니다 자바 접근 방식이 작동하는 이유
class Node{
int data;
Node *left;
Node *right;
}
내가 같은 혼란 스러워요. C++에서 왼쪽 및 오른쪽 포인터는 다음 노드가 포함 된 메모리 영역을 가리키고 있음을 이해합니다. Java에서 나는 모든 것이 연결되는 것을 끝내지 못합니다. 왼쪽과 오른쪽은 노드에 대한 포인터가 아니라 노드 자체이므로 Java의 각 노드 객체는 3 노드 (자체 노드와 자식 노드)의 공간을 차지합니까? 누구나 실제로 모든 노드가 얼마나 정확하게 연결되어 있고 메모리 할당의 차이가 있는지에 관해서 여기서 실제로 무엇이 일어나는지 설명 할 수 있다면 매우 유용 할 것입니다.
또한 C++에서 동일한 작업을 수행 할 수 있습니까? 포인터 대신 노드 왼쪽과 노드를 가질 수 있습니까? 그렇다면 처음부터 포인터를 사용하면 어떤 이점이 있습니까? 고맙습니다!
Java가 참조를 사용 중입니다. C++에는 또한 참조가 있습니다. 일부 언어에는 참조가 없습니다. –
자바는 거의 모든 것을 위해 포인터를 사용합니다. 변수를 객체와 동일하게 설정할 때마다 객체에 대한 포인터 만 저장하면됩니다. 차이점은 Java가 포인터에 직접 액세스하거나 조작하거나 수학을 사용하지 못하게한다는 것입니다. 자동 및 때로는 원활하게 처리합니다. – kbelder
@ArchbishopOfBanterbury 아니요, 이것들은 전혀 이해가되지 않습니다. 만약 당신이 말한 것처럼'left'와'right'가''binary_search_tree' 인스턴스 "라면,이 클래스를 사용할 때마다 런타임 오류가 발생할 것입니다. 메모리 할당이 중지되지 않습니다). Java 참조는 인스턴스가 아닙니다. 참조에 인스턴스를 할당 할 수 있지만 'null'일 수도 있습니다 ('null'은 인스턴스의 인스턴스가 아닙니다). – Xiobiq