Advertisement
Help Keep Boards Alive. Support us by going ad free today. See here: https://subscriptions.boards.ie/.
If we do not hit our goal we will be forced to close the site.

Current status: https://keepboardsalive.com/

Annual subs are best for most impact. If you are still undecided on going Ad Free - you can also donate using the Paypal Donate option. All contribution helps. Thank you.
https://www.boards.ie/group/1878-subscribers-forum

Private Group for paid up members of Boards.ie. Join the club.

Java Binary Search tree

  • 27-11-2017 06:00PM
    #1
    Closed Accounts Posts: 191 ✭✭


    Hi i have got a program that creates a BST in Java i have a method to insert data into the tree and i have a method that prints the data in order. Can anyone help me modify my print method so it prints like the following eg.

    Root 50
    New Leaf
    Left child 20 , Right child 60
    New Leaf
    Left child 10 , Right child etc
    etc...

    I will post my code i have made so far below, Thanks.

    package a4;
    
    public class BinaryTree {
    
        Node root;
    
        public void add(int data) {
            Node nodeToAdd = new Node(data);
            if (root == null) {
                root = nodeToAdd;
            }
    
            traverseAndAddNode(root, nodeToAdd);
    
        }
    
        public void traverseAndAddNode(Node node, Node nodeToAdd) {
            if (nodeToAdd.getData() < node.getData()) {
    
                if (node.getLeftChild() == null) {
                    node.setLeftChild(nodeToAdd);
                } else {
                    traverseAndAddNode(node.getLeftChild(), nodeToAdd);
                }
                traverseAndAddNode(node.getLeftChild(), nodeToAdd);
            } else if (nodeToAdd.getData() > node.getData()) {
    
                if (node.getRightChild() == null) {
                    node.setRightChild(nodeToAdd);
                } else {
                    traverseAndAddNode(node.getRightChild(), nodeToAdd);
                }
                traverseAndAddNode(node.getRightChild(), nodeToAdd);
            }
        }
    
        public void traverse() {
            if (root != null) {
    
                Node nodeToTraverse = root;
                if (nodeToTraverse.getLeftChild() == null && nodeToTraverse.getRightChild() == null) {
                    System.out.println(nodeToTraverse.getData());
                } else {
                    inOrderTraversal(nodeToTraverse);
                }
            }
        }
    
        public void inOrderTraversal(Node node) {
            
            System.out.println(node.getData());
            
            if (node.getLeftChild() != null) {
    
                inOrderTraversal(node.getLeftChild());
            }
            
            if (node.getRightChild() != null) {
    
                inOrderTraversal(node.getRightChild());
            }
        }
    }
    
    
    
    Tagged:


Comments

  • Registered Users, Registered Users 2 Posts: 7,098 ✭✭✭Talisman


    You want an in order traversal so the pattern is :

    1 - Visit left sub-tree
    2 - Display node value
    3 - Visit right sub-tree


Advertisement