빈 노드로 시작하는 허프만 이진 트리가 있습니다.부모를 나무에 설정하십시오.
A는 왼쪽 노드와 오른쪽 노드를 가리키며, 왼쪽 노드와 오른쪽 노드도 가리 킵니다. 이 트리를 가지면 재귀 적으로 각 노드의 부모 노드를 설정할 수 있습니까? 나는 현재 값이 큰에 적어도 분류와 우선 순위 큐를 사용하여 트리를 만드는 오전 방법
다음public Node setParents(Node n)
{
if(n.getZero() == null && n.getOne() == null)
{
return n;
}
Node a = setParents(n.getZero()); // Zero being left
a.setParent(n);
Node b = setParents(n.getOne()); // One being right.
b.setParent(n);
}
은 다음과 같습니다
이
내가 생각하고 코드입니다.public Node createTree(PriorityQueue<Node> pq)
{
while(pq.size() > 1)
{
Node n = new Node();
Node a = pq.poll();
if(pq.size() > 0)
{
Node b = pq.poll();
n = new Node(a.getFrequency() + b.getFrequency());
n.setZero(a);
a.setWhich(0);
a.setParent(n);
n.setOne(b);
b.setWhich(1);
b.setParent(n);
}
else
{
n = new Node(a.getFrequency());
n.setZero(a);
a.setWhich(0);
n.setParent(n);
n.setOne(null);
}
pq.add(n);
}
Node n = pq.poll();
n.setParent(null);
setParents(n.getZero());
setParents(n.getOne());
return n;
}
각 노드에 부모가 있는지 확인해야합니다. 여기서부터 시작해야 할 곳이 어디인지 알 수 없습니다. 도움이 필요하십니까?
@ RyanDawkins가 도움이 되었습니까? – Vitaly