Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JAVA: binary trees

Here I am trying to practice making binary trees so that I can do different operations with them.

import java.util.*;
import java.lang.*;


public class Main {

public static void main(String[] args) {

}
}

//Building Binary Trees
class bTree {

static class Node { //remember to initilize a root

    String value;
    Node left, right;

    Node(String value, Node left, Node right) {
        this.value = value;
        this.left = left;
        this.right = right;
    }
    Node(String value) //THIS IS A SIBLING CONSTRUCTOR
    {
        this(value, null, null);
    }

    Node root = new Node("ROOT");
    Node lefty = new Node("LEFT0");
    Node righty = new Node("RIGHT0");
    root.left = lefty;
    root.right = righty;
}
Node root = null;
}

Why am I getting the error: Identifier expected at the root.left and root.right assignment?

Thanks!

like image 211
Samuel French Avatar asked Oct 24 '22 06:10

Samuel French


1 Answers

The assignment statements

root.left = lefty;
root.right = righty;

are not allowed on the class level. You can achieve the effect you want changing this line

Node root = new Node("ROOT");

to this

Node root = new Node("ROOT", lefty, righty);

which takes advantage of your three-argument constructor.

However, you may want to reconsider the placement of root, lefty and righty. They are probably intended in the bTree class. Also, there is a convention that encourages naming class capitalizing the first letter of each word, e.g. BinaryTree.

like image 85
Adam Zalcman Avatar answered Oct 31 '22 14:10

Adam Zalcman