数据类型之二叉树小结
之前学习了数据类型中的链表,在数据类型中还有一种树形结构,而二叉树即是一种数。二叉树跟双向链表有些相似,二叉树也有父结点和子结点,只是子结点有两个,一个是左结点,一个是右结点。
public class TreeNode<E> {//左结点、右结点、父结点private TreeNode<E> left;private TreeNode<E> right;private TreeNode<E> parent;private E data;//结点的构造器,存储入数据public TreeNode(E e){this.setData(e);}//设置父结点的方法public void setParent(TreeNode<E> parent) {this.parent = parent;}//得到父结点的方法public TreeNode<E> getParent() {return parent;}//设置左结点的方法public void setLeft(TreeNode<E> left) {this.left = left;}//得到左结点的方法public TreeNode<E> getLeft() {return left;}//设置右结点的方法public void setRight(TreeNode<E> right) {this.right = right;}//得到右结点的方法public TreeNode<E> getRight() {return right;}//存储入数据的方法public void setData(E data) {this.data = data;}//得到数据的方法public E getData() {return data;}}
下面我们测试一下二叉树:
public class TreeNodeTest {/** * @param args */public static void main(String[] args) {paintTree(CreatTree());}/** * 建树 * @return:树的根节点 */public static TreeNode<String> CreatTree(){TreeNode<String> root = new TreeNode<String>("媒");root.setParent(root);TreeNode<String> left = new TreeNode<String>("杰");TreeNode<String> right = new TreeNode<String>("李");root.setLeft(left);root.setRight(right);left.setParent(root);right.setParent(root);TreeNode<String> left_left = new TreeNode<String>("蓝");TreeNode<String> left_right = new TreeNode<String>("数");left.setLeft(left_left);left.setRight(left_right);left_left.setParent(left);left_right.setParent(left);TreeNode<String> right_left = new TreeNode<String>("班");TreeNode<String> right_right = new TreeNode<String>("勇");right.setLeft(right_left);right.setRight(right_right);right_left.setParent(right);right_right.setParent(right);return root;}/** * 打印数中的数据 * @param root:树的根节点 */public static void paintTree(TreeNode<String> root){if(root!=null){String s = root.getData();System.out.println("数据是:"+s);TreeNode<String> node1 = root.getLeft();TreeNode<String> node2 = root.getRight();paintTree(node1);paintTree(node2);}}}
这样一个简单的二叉树就完成了。
