2012-06-20 2 views
2

다음 예제와 같이 모든 리프가 object 인 트리가 있습니다.나무에서 빵 부스러기를 어떻게 얻을 수 있습니까?

[1] 
|--[2] 
| |--[3] 
| |--[4] 
|  |--[5] 
|--[6] 

클래스 구조는 다음과 같습니다 잎 3을 선택

public class Node { 
    private Integer id; 
    private List<Node> children; 
    public Integer getId() 
    { 
     return id; 
    } 
    public void setId(Integer id) 
    { 
     this.id = id; 
    } 
    public List<Node> getChildren() 
    { 
     return children; 
    } 
    public void setChildren(List<Node> children) 
    { 
     this.children = children; 
    } 
} 

경우, 빵가루 1 2 3. 어떻게이 나무에서 빵 부스러기를 만들 수 있습니까? 재귀 적으로 트리를 만들 수있는 방법을 알고 있지만 빵 부스러기로 올바른 리프를 선택하는 방법을 모르겠습니다.

답변

5

자녀에게 부모 포인터가 있어야합니다. 자식을 추가 할 때 부모 노드는 자식 부모 포인터를 자신에게 설정할 수 있습니다.

그러면 이것을 사용하여 선택한 리프 노드에서 탐색 경로를 쉽게 만들 수 있습니다.

+0

멋지지만 필드를 직접 지정하는 대신'child.setParent (this)'메소드를 사용해야합니다 ('child.parent = this'). – Baz

+0

@Baz - 그렇습니다, 그것은 세련 될 것입니다. 이 클래스는 모두 클래스 자체 (및 private) 내에 있으므로 개발자/관리자가 직접 액세스 할 수 있습니다. –

+0

ok, fair enough :) – Baz

1

생성하는 동안 각 노드에 부모로 필드를 추가 할 수 있습니다. 이 방법을 사용하면 각 객체에서 루트까지 이동할 수 있습니다.

관련 문제