package com.muluo.tree;
public class TreeNode {
int value;
TreeNode leftNode;
TreeNode rightNode;
public TreeNode(int value) {
this.value = value;
}
public void setLeftNode(TreeNode leftNode) {
this.leftNode = leftNode;
}
public void setRightNode(TreeNode rightNode) {
this.rightNode = rightNode;
}
public void frontShow() {
System.out.print(value + " ");
if (leftNode != null) {
leftNode.frontShow();
}
if (rightNode != null) {
rightNode.frontShow();
}
}
public void midShow() {
if (leftNode != null) {
leftNode.midShow();
}
System.out.print(value + " ");
if (rightNode != null) {
rightNode.midShow();
}
}
public void afterShow() {
if (leftNode != null) {
leftNode.afterShow();
}
if (rightNode != null) {
rightNode.afterShow();
}
System.out.print(value + " ");
}
public TreeNode frontSearch(int i) {
TreeNode target = null;
if (this.value == i) {
return this;
} else {
if (leftNode != null) {
target = leftNode.frontSearch(i);
}
if (target != null) {
return target;
}
if (rightNode != null) {
target = rightNode.frontSearch(i);
}
}
return target;
}
public void delete(int i) {
TreeNode parent = this;
if (parent.leftNode != null && parent.leftNode.value == i) {
parent.leftNode = null;
}
if (parent.rightNode != null && parent.rightNode.value == i) {
parent.rightNode = null;
}
parent = leftNode;
if (parent != null) {
parent.delete(i);
}
parent = rightNode;
if (parent != null) {
parent.delete(i);
}
}
@Override
public String toString() {
return this.value + " ";
}
}
package com.muluo.tree;
public class BinaryTreee {
TreeNode root;
public void setRoot(TreeNode root) {
this.root = root;
}
public TreeNode getRoot() {
return root;
}
public void frontShow() {
if (root != null) {
root.frontShow();
}
}
public void midShow() {
if (root != null) {
root.midShow();
}
}
public void afterShow() {
if (root != null) {
root.afterShow();
}
}
public TreeNode frontSearch(int i) {
return root.frontSearch(i);
}
public void delete(int i) {
if (root.value == i) {
root = null;
} else {
root.delete(i);
}
}
}
package com.muluo.tree;
public class TestBinarchTree {
public static void main(String[] args) {
BinaryTreee binaryTree = new BinaryTreee();
TreeNode root = new TreeNode(1);
binaryTree.setRoot(root);
TreeNode lNode = new TreeNode(2);
root.setLeftNode(lNode);
TreeNode rNode = new TreeNode(3);
root.setRightNode(rNode);
lNode.setLeftNode(new TreeNode(4));
lNode.setRightNode(new TreeNode(5));
rNode.setLeftNode(new TreeNode(6));
rNode.setRightNode(new TreeNode(7));
System.out.println("前序遍历: ");
binaryTree.frontShow();
System.out.println();
System.out.println("中序遍历:");
binaryTree.midShow();
System.out.println();
System.out.println("后序遍历:");
binaryTree.afterShow();
System.out.println();
System.out.println("查找元素:");
TreeNode result = binaryTree.frontSearch(5);
System.out.println(result);
System.out.println("删除元素");
binaryTree.delete(3);
binaryTree.frontShow();
}
}