An HP interview question is used to review recursion:
Import Java. util. stack;/*** @ author gl65293 ***/public class treetest {public static void main (string [] ARGs) {noder root = noder. init (); system. out. println ("DLR:"); noder. preorder (Root); system. out. println (""); system. out. println ("LDR:"); noder. inorder (Root); system. out. println (""); system. out. println ("LRD:"); noder. postorder (Root) ;}} class noder {private string name; private noder leftnoder; Private noder rightnoder; Public noder (string name, noder leftnoder, noder rightnoder) {This. name = Name; this. leftnoder = leftnoder; this. rightnoder = rightnoder;} public static noder Init () {noder d = new noder ("D", null, null); noder E = new noder ("e", null, null); noder F = new noder ("F", null, null); noder G = new noder ("g", null, null ); noder B = new noder ("B", d, e); noder c = new noder ("C", f, g ); Noder A = new noder ("A", B, c); return a;} public static void printnode (noder) {system. out. print (noder. getname () + "");} public static void preorder (noder) {If (noder! = NULL) {printnode (noder); preorder (noder. getleftnoder (); preorder (noder. getrightnoder () ;}} public static void inorder (noder) {If (noder! = NULL) {inorder (noder. getleftnoder (); printnode (noder); inorder (noder. getrightnoder () ;}} public static void postorder (noder) {If (noder! = NULL) {postorder (noder. getleftnoder (); postorder (noder. getrightnoder (); printnode (noder) ;}} public static void stackpreorder (noder) {stack <noder> stack = new stack <noder> (); If (noder! = NULL) {stack. Push (noder); While (! Stack. Empty () {noder = stack. Pop (); printnode (noder); If (noder. getrightnoder ()! = NULL) {stack. Push (noder. getrightnoder ();} If (noder. getleftnoder ()! = NULL) {stack. push (noder. getleftnoder () ;}}} Public String getname () {return name;} public void setname (string name) {This. name = Name;} public noder getleftnoder () {return leftnoder;} public void setleftnoder (noder leftnoder) {This. leftnoder = leftnoder;} public noder getrightnoder () {return rightnoder;} public void setrightnoder (noder rightnoder) {This. rightnoder = rightnoder ;}}