The node class is first defined to store the contents of each node:
Public classNode {//Key Words Private intKeyData; //Other data Private intOtherdata; //left dial hand node PrivateNode Leftnode; //Right child node PrivateNode Rightnode; PublicNode (intKeyData,intotherdate) { This. KeyData =KeyData; This. Otherdata =otherdate; } Public intGetkeydata () {returnKeyData; } Public voidSetkeydata (intkeyData) { This. KeyData =KeyData; } PublicNode Getleftnode () {returnLeftnode; } Public voidSetleftnode (Node leftnode) { This. Leftnode =Leftnode; } Public intGetotherdata () {returnOtherdata; } Public voidSetotherdata (intotherdata) { This. Otherdata =Otherdata; } PublicNode Getrightnode () {returnRightnode; } Public voidSetrightnode (Node rightnode) { This. Rightnode =Rightnode; } //Display Method Public voiddisplay () {System.out.println (KeyData+ "," +otherdata); } }
Then define a tree class and use the pre-order traversal, the middle sequence traversal, and the post-order traversal
Public classTree {//Root PrivateNode Root; //Insert Method Public voidInsertintKeyData,intotherdata) {Node NewNode=NewNode (KeyData, otherdata); //If there are no nodes, if(Root = =NULL) {root=NewNode; } Else{Node current=Root; Node parent; while(true) {Parent=Current ; if(KeyData <Current.getkeydata ()) { Current=Current.getleftnode (); if(Current = =NULL) {Parent.setleftnode (NewNode); return; } } Else{ Current=Current.getrightnode (); if(Current = =NULL) {Parent.setrightnode (NewNode); return; } } } } } //Find Method PublicNode Find (intkeyData) {Node current=Root; while(Current.getkeydata ()! =keyData) { if(KeyData <Current.getkeydata ()) { Current=Current.getleftnode (); } Else{ Current=Current.getrightnode (); } if(Current = =NULL) { return NULL; } } returnCurrent ; } //Modify Method Public voidChangeintKeyData,intnewotherdata) {Node FindNode=find (KeyData); Findnode.setotherdata (Newotherdata); } //First Order Traversal Public voidPreorder (node node) {if(Node! =NULL) {node.display (); Preorder (Node.getleftnode ()); Preorder (Node.getrightnode ()); } } //Middle Sequence Traversal Public voidinorder (node node) {if(Node! =NULL) {inorder (Node.getleftnode ()); Node.display (); Inorder (Node.getrightnode ()); } } //Post-post traversal Public voidEndorder (node node) {if(Node! =NULL) {Endorder (Node.getleftnode ()); Endorder (Node.getrightnode ()); Node.display (); } } PublicNode Getroot () {returnRoot; }}
Test:
Tree tree =NewTree (); Tree.insert (80, 80); Tree.insert (49, 49); Tree.insert (42, 42); Tree.insert (30, 30); Tree.insert (45, 45); Tree.insert (90, 90); Tree.insert (150, 150); Tree.insert (130, 130); Tree.insert (82, 82); System.out.println ("Pre-order Traversal:"); Tree.preorder (Tree.getroot ()); System.out.println ("Middle sequence Traversal:"); Tree.inorder (Tree.getroot ()); System.out.println ("Post-post traversal:"); Tree.endorder (Tree.getroot ());
Java Language Implementation Tree