5

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!

1 Answer 1

3

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.

Sign up to request clarification or add additional context in comments.

2 Comments

nice debugging. +1 for faster answer.
So I don't understand then. How can I change a node's left and right properties throughout the program?? EDIT: Nevermind, I got it!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.