package com.coding.basic; /** * 实际上是一个二叉搜索树BinarySearchTree */ public class BinaryTreeNode { //根节点this// private Object data; private BinaryTreeNode left; private BinaryTreeNode right; public BinaryTreeNode () {} public BinaryTreeNode(Object o) { this.data=o; this.left=null; this.right=null; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public BinaryTreeNode getLeft() { return left; } public void setLeft(BinaryTreeNode left) { this.left = left; } public BinaryTreeNode getRight() { return right; } public void setRight(BinaryTreeNode right) { this.right = right; } //前序遍历,根左右// public void preOrder(BinaryTreeNode node) { if (node.data!=null) { System.out.print(node.data + " "); if (node.left!=null) { preOrder(node.left); } if (node.right!=null) { preOrder(node.right); } } } //中序遍历,左根右// public void inOrder(BinaryTreeNode node) { if (node.data!=null) { if (node.left!=null) { inOrder(node.left); } System.out.print(node.data + " "); if (node.right!=null) { inOrder(node.right); } } } //后序遍历,左右根// public void postOrder(BinaryTreeNode node) { if (node.data!=null) { if (node.left!=null) { postOrder(node.left); } if (node.right!=null) { postOrder (node.right); } System.out.print(node.data + " "); } } public BinaryTreeNode insert(Object o){ //先看看根节点是不是空的// if (this.data==null){ this.data=o; return this; }else{ //小的去左边,大的去右边// if ((int) o < (int) this.data){ /*若左边是空的那就是你了,链上一个新的节点 *若左边不是空的则继续往下找空的 */ if (this.left==null){ this.left = new BinaryTreeNode(o); return this.left; }else{ return this.left.insert(o); } }else{ /*若右边是空的那就是你了,链上一个新的节点 *若右边不是空的则继续往下找空的 */ if (this.right==null){ this.right = new BinaryTreeNode(o); return this.right; }else{ return this.right.insert(o); } } } } }