Java Reference
In-Depth Information
/
**
Huffmantreenodeimplementation:Baseclass
*
/
publicinterfaceHuffBaseNode<E>{
publicbooleanisLeaf();
publicintweight();
}
/
**
Huffmantreenode:Leafclass
*
/
classHuffLeafNode<E>implementsHuffBaseNode<E>{
privateEelement; //Elementforthisnode
privateintweight; //Weightforthisnode
/
**
Constructor
*
/
publicHuffLeafNode(Eel,intwt)
{element=el;weight=wt;}
/
**
@returnTheelementvalue
*
/
publicEelement(){returnelement;}
/
**
@returnTheweight
*
/
publicintweight(){returnweight;}
/
**
Returntrue
*
/
publicbooleanisLeaf(){returntrue;}
}
/
**
Huffmantreenode:Internalclass
*
/
classHuffInternalNode<E>implementsHuffBaseNode<E>{
privateintweight; //Weight(sumofchildren)
privateHuffBaseNode<E>left;//Pointertoleftchild
privateHuffBaseNode<E>right;//Pointertorightchild
/
**
Constructor
*
/
publicHuffInternalNode(HuffBaseNode<E>l,
HuffBaseNode<E>r,intwt)
{left=l;right=r;weight=wt;}
/
**
@returnTheleftchild
*
/
publicHuffBaseNode<E>left(){returnleft;}
/
**
@returnTherightchild
*
/
publicHuffBaseNode<E>right(){returnright;}
/
**
@returnTheweight
*
/
publicintweight(){returnweight;}
/
**
Returnfalse
*
/
publicbooleanisLeaf(){returnfalse;}
}
Figure5.27
Implementation for Huffman tree nodes. Internal nodes and leaf
nodes are represented by separate classes, each derived from an abstract base class.