Question: importjava.util. * ;publicclassRBT { publicNoderoot;publicRBT ( ) { } publicbooleanisRed ( Nodex ) { if ( x = = null ) { returnfalse; } else

importjava.util.*;publicclassRBT{publicNoderoot;publicRBT(){}publicbooleanisRed(Nodex){if(x==null){returnfalse;}else{returnx.getColor()==Node.Color.RED;}}publicbooleanisEmpty(){returnthis.root==null;}publicbooleancontains(intx){returnthis.nodeContainsData(this.root,x);}privatebooleannodeContainsData(Noder,intx){while(true){if(r!=null){if(r.getData()-x<0){r=r.getLeft();continue;}if(r.getData()-x>0){r=r.getRight();continue;}returntrue;}returnfalse;}}publicListserializeTree(){returnthis.serializeTree(this.root);}privateListserializeTree(Noder){if(r==null){returnnewLinkedList();}else{intdata=r.getData();Listleft=this.serializeTree(r.getLeft());Listright=this.serializeTree(r.getRight());left.add(data);left.addAll(right);returnleft;}}publicintmaxHeight(){returnthis.maxHeight(this.root);}privateintmaxHeight(Noder){returnr==null?0:1+Math.max(this.maxHeight(r.getLeft()),this.maxHeight(r.getRight()));}publicvoidinsert(intx){this.root=this.nodeInsertData(this.root,x);this.root.setColor(Node.Color.BLACK);}privateNodenodeInsertData(Noder,intx){if(r==null){returnnewNode(x,Node.Color.RED);}else{if(xr.getData()){r.setRight(this.nodeInsertData(r.getRight(),x));if(r.getRight()!=null){r.getRight().setParent(r);}}if(this.isRed(r.getRight())&&!this.isRed(r.getLeft())){r=this.rotateLeft(r);}if(this.isRed(r.getLeft())&&r.getLeft()!=null&&this.isRed(r.getLeft().getLeft())){r=this.rotateRight(r);}if(this.isRed(r.getLeft())&&this.isRed(r.getRight())){this.flipColors(r);}returnr;}}privateNoderotateRight(Nodeh){Nodex=h.getLeft();h.setLeft(x.getRight());if(x.getRight()!=null){x.getRight().setParent(h);}x.setRight(h);x.setColor(h.getColor());h.setColor(Node.Color.RED);x.setParent(h.getParent());h.setParent(x);returnx;}privateNoderotateLeft(Nodeh){Nodex=h.getRight();h.setRight(x.getLeft());if(x.getLeft()!=null){x.getLeft().setParent(h);}x.setLeft(h);x.setColor(h.getColor());h.setColor(Node.Color.RED);x.setParent(h.getParent());h.setParent(x);returnx;}privatevoidflipColors(Nodeh){h.setColor(Node.Color.RED);if(h.getLeft()!=null){h.getLeft().setColor(Node.Color.BLACK);}if(h.getRight()!=null){h.getRight().setColor(Node.Color.BLACK);}}publicNodegetRoot(){returnthis.root;}}
importorg.junit.jupiter.api.Test;importstaticorg.junit.jupiter.api.Assertions.*;importjava.util.List;/**@version1.0.1*@authorDanielWilson(dancodes.online)*/publicclassRBTTest{@TestpublicvoidtestMaxHeight(){RBTtree=newRBT();tree.insert(10);assertEquals(1,tree.maxHeight());}@TestpublicvoidtestMaxHeightDuplicates(){RBTtree=newRBT();tree.insert(10);tree.insert(10);assertEquals(1,tree.maxHeight());}@TestpublicvoidtestMaxHeight_2(){RBTtree=newRBT();tree.insert(10);tree.insert(5);assertEquals(2,tree.maxHeight());}/***Thetreeshouldinsertlikearegulartree*/@TestpublicvoidtestTreeInsert(){RBTrbt=newRBT();rbt.insert(10);rbt.insert(5);rbt.insert(15);assertEquals(Node.Color.BLACK,rbt.root.getColor());assertEquals(Node.Color.RED,rbt.root.getLeft().getColor());assertEquals(Node.Color.RED,rbt.root.getRight().getColor());}/***Case1:Therootisalwaysblack*/@TestpublicvoidtestInsertionCase1(){RBTrbt=newRBT();rbt.insert(10);assertEquals(Node.Color.BLACK,rbt.root.getColor());}/***Case2:X.uncleisred*/@TestpublicvoidtestInsertionCase2_Left(){RBTrbt=newRBT();rbt.insert(10);rbt.insert(5);rbt.insert(15);rbt.insert(0);assertEquals(Node.Color.BLACK,rbt.root.getColor());assertEquals(Node.Color.BLACK,rbt.root.getLeft().getColor());assertEquals(Node.Color.BLACK,rbt.root.getRight().getColor());assertEquals(Node.Color.RED,rbt.root.getLeft().getLeft().getColor());assertEquals(null,rbt.root.getRight().getLeft());}/***Case2:X.uncleisred*/@TestpublicvoidtestInsertionCase2_Right(){RBTrbt=newRBT();rbt.insert(10);rbt.insert(5);rbt.insert(15);rbt.insert(20);assertEquals(Node.Color.BLACK,rbt.root.getColor());assertEquals(Node.Color.BLACK,rbt.root.getLeft().getColor());assertEquals(Node.Color.BLACK,rbt.root.getRight().getColor());assertEquals(Node.Color.RED,rbt.root.getRight().getRight().getColor());assertEquals(null,rbt.root.getRight().getLeft());}
/***TheNodeclassrepresentsanodeinared-blacktree.*/publicclassNode{/***AColoriseitherREDorBLACK.*/publicenumColor{RED,BLACK}privateColorcolor;privateintdata;privateNodeleft;privateNoderight;privateNodeparent;/***Createanewnodegivenanintandacolor.*Setstheleftandrightsub-treestonull.*@paramdataThevaluestoredinthenode*@paramcolorTheinitialcolorofthenode*/publicNode(intdata,Colorcolor){left=null;right=null;parent=null;this.color=color;this.data=data;}/***Createanewnodegivenanint,acolor,*theleftandrightsub-trees,andtheparent.*@paramdataThevaluestoredinthenode*@paramcolorTheinitialcolorofthenode*@paramleftTheleftsub-tree*@paramright
I keep getting NullpointerExceptions for testInsertionCase2_Right() not all code because i couldnt include it all

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!