1, 定义二叉树的节点对象
public class TreeNode {
public TreeNode leftChild; //左子树
public TreeNode rightChild; //右子树
public Integer value; //值
public TreeNode(Integer value) {
this.value = value;
}
}
2,对二叉树进行管理
方法一:
//定义当前整棵树的记录
public TreeNode root;
//方法---》
public void insert(Integer value){
// 新建一个节点
TreeNode newNode = new TreeNode(value);
if(root==null){
root = newNode;
return;
}
//创建节点进行遍历
TreeNode currentNode = root;
//定义一个新的指针:记录currentNode的上一个地址
TreeNode parentNode;
while (true){
parentNode = currentNode;
if (newNode.value > currentNode.value){
currentNode = currentNode.rightChild;
if (currentNode == null){
parentNode.rightChild = newNode;
return;
}
}else {
currentNode = currentNode.leftChild;
if (currentNode== null){
parentNode.leftChild = newNode;
return;
}
}
}
方法二:
public TreeNode insertdiGui(Integer value,TreeNode node){
// 新建一个节点
TreeNode newNode = new TreeNode(value);
if(root==null){
return root = newNode;
}
if (value>node.value){
if (node.rightChild == null){
node.rightChild = newNode;
return root;
}
return insertdiGui(value,node.rightChild);
}else {
if (node.leftChild == null){
node.leftChild = newNode;
return root;
}
return insertdiGui(value,node.leftChild);
}
}
3,测试类
public class Test {
public static void main(String[] args) {
// TreeNode treeNode = new TreeNode(5);
// TreeNode treeNode1 = new TreeNode(4);
// TreeNode treeNode2 = new TreeNode(6);
// TreeNode treeNode3 = new TreeNode(7);
// treeNode.leftChild = treeNode1;
// treeNode.rightChild= treeNode2;
// treeNode2.rightChild = treeNode3;
BinaryTree binaryTree = new BinaryTree();
binaryTree.insert(5);
binaryTree.Order();
binaryTree.delete(binaryTree.root,5);
}
}