package Tree;
public class TreeNode {
private Integer data;
private String description;
private TreeNode leftNode;
private TreeNode rightNode;
public Integer getData() {
return data;
}
public void setData(Integer data) {
this.data = data;
}
public TreeNode getLeftNode() {
return leftNode;
}
public void setLeftNode(TreeNode leftNode) {
this.leftNode = leftNode;
}
public TreeNode getRightNode() {
return rightNode;
}
public void setRightNode(TreeNode rightNode) {
this.rightNode = rightNode;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "TreeNode [data=" + data + ", description=" + description + ", leftNode=" + leftNode + ", rightNode="
+ rightNode + "]";
}
}
-------------------
package Tree;
public class TestClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] nums = {50,25,75,12,35,100,60,65,10,23,45,90,70,78,72,71,73,96,28};// new int[] {};
TreeNode tree = new TreeNode();
for(Integer i : nums) {
add(tree,i);
}
//System.out.println(tree);
//search(tree,96);
del(tree, 50,50);
System.out.println(tree);
}
public static void add(TreeNode node, Integer data) {
if( node.getData() == null ) {
node.setData(data);
node.setDescription("你好,我的值是:" + data);
}else {
if( node.getData() >= data ) {
if( node.getLeftNode() == null ) {
node.setLeftNode(new TreeNode());
}
node = node.getLeftNode();
}else {
if( node.getRightNode() == null ) {
node.setRightNode(new TreeNode());
}
node = node.getRightNode();
}
add(node, data);
}
}
public static void search( TreeNode node, Integer data ) {
if( node == null ) {
System.err.println("不存在这个值");
return;
}
if( node.getData() != null ) {
if( node.getData() == data ) {
System.out.println("找到啦!对应的文字应该是:" + node.getDescription());
}else if( node.getData() > data ) {
search(node.getLeftNode(),data);
}else {
search(node.getRightNode(),data);
}
}else {
System.err.println("不存在这个值");
}
}
public static void del( TreeNode node, Integer data, Integer rootdata ) {
if( node == null ) {
System.err.println("不存在这个值,无处可删");
return;
}
if( rootdata == data ) {
TreeNode node2 = node;
if( node2.getLeftNode()!= null ) {
node2 = node2.getLeftNode();
TreeNode nodeFlag = null;
while( node2.getRightNode() != null ) {
if( node2.getRightNode().getRightNode() == null ) {
nodeFlag = node2;
}
node2 = node2.getRightNode();
}
node.setData(node2.getData());
if( nodeFlag != null ) {
nodeFlag.setRightNode(null);
}
}else {
node2 = node2.getRightNode();
}
}else {
}
}
}