Binary tree traversal - recursion - java

public class TreeTraversalRec {

    public void preOrder(TreeNode root) {
        if (root != null) {
            System.out.println(root.getData());
            preOrder(root.getLeft());
            preOrder(root.getRight());
        }
    }

    public void inOrder(TreeNode root) {
        if (root != null) {
            inOrder(root.getLeft());
            System.out.println(root.getData());
            inOrder(root.getRight());
        }
    }

    public void postOrder(TreeNode root) {
        if (root != null) {
            postOrder(root.getLeft());
            postOrder(root.getRight());
            System.out.println(root.getData());
        }
    }
}

class TreeNode{
    private String data;
    private TreeNode left;
    private TreeNode right;

    public String getData() {
        return data;
    }

    public TreeNode setData(String data) {
        this.data = data;
        return this;
    }

    public TreeNode getLeft() {
        return left;
    }

    public TreeNode setLeft(TreeNode left) {
        this.left = left;
        return this;
    }

    public TreeNode getRight() {
        return right;
    }

    public TreeNode setRight(TreeNode right) {
        this.right = right;
        return this;
    }
}
---------------------

Testing:

package ds.trees;

public class TreeTraversalRecTest {

    TreeTraversalRec treeTraversalRec;
    TreeNode a;

    @Before
    public void init(){
        a = new TreeNode();
        TreeNode b = new TreeNode();
        TreeNode c = new TreeNode();
        TreeNode d = new TreeNode();
        TreeNode e = new TreeNode();
        TreeNode f = new TreeNode();
        TreeNode g = new TreeNode();

        g.setData("g");
        f.setData("f");
        e.setData("e");
        d.setData("d").setLeft(f);
        c.setData("c").setRight(g);
        b.setData("b").setLeft(d).setRight(e);
        a.setData("a").setLeft(b).setRight(c);

        treeTraversalRec = new TreeTraversalRec();
    }

    @org.junit.Test
    public void testPreOrder() throws Exception {
        System.out.println("PreOrder");
        treeTraversalRec.preOrder(a);
    }

    @org.junit.Test
    public void testInOrder() throws Exception {
        System.out.println("InOrder");
        treeTraversalRec.inOrder(a);
    }

    @org.junit.Test
    public void testPostOrder() throws Exception {
        System.out.println("PostOrder");
        treeTraversalRec.postOrder(a);
    }
}

------------------------
Github

https://github.com/sujjjith/DS/blob/master/src/test/java/ds/trees/TreeTraversalRecTest.java
https://github.com/sujjjith/DS/blob/master/src/main/java/ds/trees/TreeTraversalRec.java

Comments

Popular posts from this blog

EJB - Stateful vs Stateless

Inversion of Control vs Dependency Injection