二叉树的每一个节点最多只有两个节点
特性:存入数据然后输出的时候是自动排好序的
算法:当第一个数据的添加的时候,直接回创建根节点并存入数据,当第二个数据添加的时候,会跟第一个节点比较
如果大于根节点:存储在节点左边
如果小于根节点:存储在节点右边
如果是等于的话存哪边都可以
=====================代码============================
[Java] 纯文本查看 复制代码 package com.test9;
// 二叉树算法实现
public class BinaryTree {
// 根节点中只存放一个Node
private Node root;
// 添加数据的方法
public void add(int data) {
// 先判断是否有根节点,没有的话直接new一个,顺便把数据传入
if (this.root == null) {
this.root = new Node(data);
} else {
// 否则调用节点的添加数据方法
this.root.addNode(data);
}
}
// 查看所有数据
public void print() {
if (this.root == null) {
System.out.println("null");
} else {
System.out.print("[");
this.root.printNode();
System.out.print("]");
}
}
private static class Node {
// 子节点也有数据和左右节点
private final int data;
private Node left;
private Node right;
// 使用构造方法来添加数据
public Node(int data) {
this.data = data;
}
// 添加数据的方法
public void addNode(int data) {
// 如果比根节点的数据大,则放左节点,否则放右节点
if (this.data > data) {
// 如果左节点还是有数据,则再下一层
if (this.left == null) {
this.left = new Node(data);
} else {
this.left.addNode(data);
}
} else {
if (this.right == null) {
this.right = new Node(data);
} else {
this.right.addNode(data);
}
}
}
// 查看所有数据
public void printNode() {
// 先判断左节点是否为空
if (this.left != null) {
// 不为空则进入下一层
this.left.printNode();
System.out.print(",");
}
// 如果为空则输出本节点
System.out.print(this.data);
// 再判断右节点是否为空,不为空则进入下一层
if (this.right != null) {
System.out.print(",");
this.right.printNode();
}
}
}
}
====================Main方法中============================
[Java] 纯文本查看 复制代码 package com.test9;
public class Main {
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
binaryTree.add(16);
binaryTree.add(20);
binaryTree.add(15);
binaryTree.add(14);
binaryTree.add(12);
binaryTree.print();
}
}
======================运行结果================================
|