codice:
public class BinaryTree { private BinaryNode root; public static class BinaryNode { private int dato; private BinaryNode left = null; private BinaryNode right = null; public BinaryNode(int dato, BinaryNode left, BinaryNode right) { this.dato = dato; this.left = left; this.right = right; } public BinaryNode(int dato) { this(dato, null, null); } public BinaryNode(int dato, int left, int right) { this(dato, new BinaryNode(left), new BinaryNode(right)); } public void setDato(int val) { dato = val; } public int getDato() { return dato; } public BinaryNode getLeftChild() { return left; } public void setLeftChild(BinaryNode child) { left = child; } public BinaryNode getRightChild() { return right; } public void setRightChild(BinaryNode child) { right = child; } public int contadati(){ int dati = 0 ; if(left != null && right != null || left == null && right == null) { dati = 1 ; } if(right != null) { dati += right.contadati() ; } if(left != null) { dati += left.contadati() ; } return dati ; } public int[] copiadati(){ final int MAX = 100 ; int[] a = new int[MAX] ; int i = 0 ; if(left != null && right != null || left == null && right == null) { a[i] = dato ; } if(right != null) { right.copiadati() ; } if(left != null) { left.copiadati() ; } return a ; } } public BinaryTree() { root = null; } public BinaryTree(BinaryNode root) { this.root = root; } public void setRoot(BinaryNode node) { root = node; } public BinaryNode getRoot() { return root; } public void printTree() { if (root == null) System.out.println("albero vuoto"); else BTreePrinter.printTree(this); } public int contadati() { if(root == null) return 0 ; return root.contadati() ; } public int[] copiadati(){ if(root == null) return null ; return root.copiadati() ; } }