package com.pxshuo.se01.basic.impl; public class BinaryTreeNode { private Object data; private BinaryTreeNode left; private BinaryTreeNode right; private int index = 0; public BinaryTreeNode() { data = null; left = null; right = null; } /** * 差入一个二叉树节点 * @param o * @return */ public BinaryTreeNode insert(Comparable<Object> o){ if(data == null){ data = o; return this; } //本节点已经存过数据 BinaryTreeNode child = new BinaryTreeNode(); child.setData(o); if (o.compareTo(data) > 0) { if (right == null) { right = child; } else { right.insert(o); } } else {//小于等于的数据放在左子树中 if (left == null) { left = child; } else { left.insert(o); } } return child; } /** * 根据二叉树的位置获取孩子节点 * @param index 0代表左孩子,1代表右孩子 * @return */ public BinaryTreeNode getChild(int index){ if(index == 0){ return getLeft(); } else if(index == 1){ return getRight(); } else { return null; } } /** * 用于打印二叉树 * @param myIndex 在二叉树中的位置--采用完全二叉树 */ public void display(int myIndex){ System.out.println(myIndex + ":" + data.toString()); if (left != null) { left.display(2 * myIndex); } if (right != null) { right.display(2 * myIndex + 1); } } /////////////////get和set函数/////////////////////////////////////// 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 setIndex(int index) { this.index = index; } public int getIndex() { return index; } }