2017-04-16 1 views
0

리스트를 이진 트리로 변환하는 것에 관한 숙제를 할당 받았다. 나는 개념을 고수하면서 문제를 풀고있다. 실제로 그것을 사용하는 방법을 알아낼 수 없습니다. 왼쪽 노드 포인터, 정보 및 오른쪽 포인터가 필요합니다. 추가 할 코드를 찾았지만이를 사용하는 방법을 이해하지 못합니다.자바 바이너리 트리의 왼쪽 포인터 정보 오른쪽 포인터 구현

class Node{ 

    int data; 
    Node left; 
    Node right; 

    public Node(int data) { 
     this.data = data;  
     left = null;  
     right = null; 
    } 
} 

는, 나는 각 노드에 왼쪽과 오른쪽 값을 할당한다고 가정하고있어 이해가 안 돼요 내 프로그램을 수행하기 위해 필요한이 전부입니다. 삽입 한 각 노드에 이름이 필요합니까?

y = avail; //whats avail? this is my first line 
treeRoot = y; 
info(y) = x[2]; //(im inputing from an array) how do i assign this? 
lptr(y)= z;  // (left pointer of y gets z) z maybe a pointer? 
+0

나는 y가 무엇인지 알지 못한다. 사용 가능한 것을 모른다. 내가 가진 것은 그가 우리에게주는 것입니다. 이것은 y = avail입니다. 나는 기본적인 psuedo에있는 프로그램을 가지고있다. 난 그냥 노드의 왼쪽 지점을 할당하는 방법을 알아낼 수 없다 –

+0

y는 내 노드 포인터 임 메신저는 가정하고 avail은 사용 가능한 노드를 얻고있다. –

답변

0

과 같은 숙제 용 가상 코드가 있습니다. 더 이상 이름이 필요하지 않습니다. 트리 구조는 각 노드가 모든 직계 자손에 대한 POINTERS를 포함한다고 제안합니다. 따라서 모든 노드는 경로 예를 들어 root->left->left->right->left->right과 같이 찾을 수 있습니다. 따라서 각 노드에 대해 Node 클래스의 새 인스턴스를 인스턴스화합니다. 그런 다음 알고리즘에 따라 어느 목록 항목이 루트가 될지 찾아야합니다. 그런 다음 목록에서 적절한 항목을 root.left = new Node(list[someIndex]) 또는 root.right = new Node(list[someIndex])으로 지정합니다. 이제 root.rightNode의 인스턴스입니다. 그래서 그것은 또한 왼쪽과 오른쪽을 가지고 있습니다. 등등.