1 packagetree;2
3 importjava.util.ArrayDeque;4 importjava.util.ArrayList;5 importjava.util.List;6 importjava.util.Queue;7
8 public class BinaryTree{9 //为什么要用静态内部类?静态内部类中不能访问外部类的非静态成员
10 public static classTreeNode{11 //E data;
12 Object data;13 TreeNode left;14 TreeNode right;15 publicTreeNode(){16
17 }18 publicTreeNode(Object data){19 this.data =data;20 }21 //构造一个新节点,该节点以left节点为其左孩子,right节点为其右孩子
22 publicTreeNode(Object data, TreeNode left, TreeNode right){23 this.data =data;24 this.left =left;25 this.right =right;26 }27 }28
29 private TreeNode root;//实现二叉树的类的数据域,即根结点来表示二叉树
30
31 publicBinaryTree(){32 this.root = newTreeNode();33 }34 //以指定的根元素创建一颗二叉树
35 publicBinaryTree(E data){36 this.root = newTreeNode(data);37 }38
39 //为指定的结点添加子结点,为什么要有addNode方法?因为给定一系列的结点,通过调用该方法来构造成一颗树
40 pu