In: Computer Science
Create a subclass of BinaryTree whose nodes have fields for storing preorder, post-order, and in-order numbers. Write methods preOrderNumber(), inOrderNumber(), and postOrderNumbers() that assign these numbers correctly. These methods should each run in O(n) time.
Answer :
copyable code:
public class BTSubClass<Node extends BTSubClass.BTNode<Node,T>, T> extends
BinaryTree<Node>
class BTSubNode<Node extends BTSubNode<Node>,TT>extends BinaryTree.BTNode<Node> {
{
TT x;
int preOrdernum;
int postOrdernum;
int inOrdernum;
}
public static int poNum=0;
public static int pstNum=0;
public static int inNum=0;
protected Node newNode(T xx)
{
Node uu=super.newNode();
uu.x=xx;
preOrdernum=0;
postOrdernum=0;
inOrdernum=0;
return uu;
}
…….
//assign preorder number to nodes
public void preOrderNumber()
{
preOrderNumber(r);
}
public void preOrderNumber(Node rr)
{
if(rr!=nil)
{
poNum++;
rr.preOrdernum=poNum;
preOrderNumber(rr.left);
preOrderNumber(rr.right);
}
}
//assign postorder number to nodes
public void postOrderNumber()
{
postOrderNumber(r);
}
public void postOrderNumber(Node rr)
{
if(rr!=nil)
{
postOrderNumber(rr.left);
postOrderNumber(rr.right);
pstNum++;
rr.postOrdernum=pstNum;
}
}
//assign inorder number to nodes
public void inOrderNumber()
{
inOrderNumber(r);
}
public void inOrderNumber(Node rr)
{
if(rr!=nil)
{
inOrderNumber(rr.left);
inNum++;
rr.inOrdernum=inNum;
inOrderNumber(rr.right);
}
}
…….
}
NOTE : PLEASE GIVE ME UP VOTE. THANK YOU.