Проблем с пример от книгата Introduction-to-Programing-with-Java-Book-v2014 - BinaryTree
Здравейте
Нещо не ми се получава примера от книгата, не мога да разбера защо, всичко е както е написано там.
public class BinaryTree { public static class BinaryTreeNode<T> { private T value; private boolean hasParent; private BinaryTreeNode<T> leftChild; private BinaryTreeNode<T> rightChild; /** * Constructs a binary tree node. * * @param value - the value of the node. * @param leftChild - the left child of the node. * @param rightChild - the right child of the node. */ public BinaryTreeNode(T value, BinaryTreeNode<T> leftChild, BinaryTreeNode<T> rightChild) { if (value == null) { throw new IllegalArgumentException( "Cannot insert null value!"); } this.value = value; this.leftChild = leftChild; this.rightChild = rightChild; } /** * Constructs a binary tree node with no children. * * @param value - the value of the node. */ public BinaryTreeNode(T value) { this(value, null, null); } public T getValue() { return this.value; } public void setValue(T value) { this.value = value; } public BinaryTreeNode<T> getLeftChild() { return this.leftChild; } public void setLeftChild(BinaryTreeNode<T> value) { if (value == null || value.hasParent) { throw new IllegalArgumentException(); } value.hasParent = true; this.leftChild = value; } public BinaryTreeNode<T> getRightChild() { return this.rightChild; } public void setRightChild(BinaryTreeNode<T> value) { if (value == null || value.hasParent) { throw new IllegalArgumentException(); } value.hasParent = true; this.rightChild = value; } } // The root of the tree private BinaryTreeNode<T> root; /** * Constructs the tree. * @param value - the value of the node. * @param children - the children of the node. */ public BinaryTree(T value, BinaryTree<T> leftChild, BinaryTree<T> rightChild) { if (value == null) { throw new IllegalArgumentException(); } BinaryTreeNode<T> leftChildNode = leftChild != null ? leftChild.root : null; BinaryTreeNode<T> rightChildNode = rightChild != null ? rightChild.root : null; this.root = new BinaryTreeNode<T>( value, leftChildNode, rightChildNode); } /** * Constructs the tree. * @param value - the value of the node. */ public BinaryTreeNode<T> getRoot() { return this.root; } /** * @return the left child of the root. */ public BinaryTreeNode<T> getLeftChildNode() { if (this.root != null) { return this.root.getLeftChild(); } return null; } /** * Traverses binary tree in pre-order manner. * @param root - the binary tree to be traversed. */ private void printPreOrder(BinaryTreeNode<T> root) { if (root == null) { return; } printPreOrder(root.getLeftChild()); System.out.print(root.getValue() + " "); printPreOrder(root.getRightChild()); } /** * Traverses and prints the binary * tree in pre-order manner. */ public void printPreOrder() { printPreOrder(this.root); System.out.println(); } }
public class BinaryTreeExample { public static void main(String[] args) { // Create the binary tree from the sample. BinaryTree<Integer> binaryTree = new BinaryTree<Integer>(14, new BinaryTree<Integer>(19, new BinaryTree<Integer>(23), new BinaryTree<Integer>(6, new BinaryTree<Integer>(10), new BinaryTree<Integer>(21))), new BinaryTree<Integer>(15, new BinaryTree<Integer>(3), null)); // Traverse and print the tree in pre-order manner. binaryTree.printPreOrder(); } }
За "BinaryTree" IntelliJ ми дава след "//The root of the tree" - "Cannot resolve symbol "T" и ми дава "Т" в червено. Не мога да разбера защо тази част е извън класа, където е дефинирано "Т". Ако го вкарам вътре се омазва още повече.
За "BinaryTreeExample" ми изкарва на "Integer" че няма такъв тип параметър и дава и грешки при компилиране и опит за изпълнение. Къде е проблема, или примера си е грешно даден?