Java-二叉树算法

时间:2024-04-24 23:16:45

二叉树算法的排序规则:

1、选择第一个元素作为根节点

2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树

3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)

二叉树算法的核心类,此类只提供了添加和打印输出的方法

package com.lym.binaryTree;

/**
* 二叉树算法的排序规则:
* 1、选择第一个元素作为根节点
* 2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
* 3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
*
* @author Administrator
*
*/
public class BinaryTree { private Node root;// 根节点 // 添加节点,提供外部访问
public void add(int data) {
if (root == null) {
root = new Node(data);
} else {
root.addNode(data);
}
} // 输出节点,提供外部访问
public void print() {
if (root != null) {
root.printNode();
}
} // 树枝节点
class Node {
private Node leftNode;
private Node rightNode;
private int data; public Node(int data) {
this.data = data;
} // 添加节点
public void addNode(int data) {
if (this.data > data) {// 添加在左面
if (this.leftNode == null) {
this.leftNode = new Node(data);
} else {
this.leftNode.addNode(data);
}
} else if (this.data <= data) {
if (this.rightNode == null) {
this.rightNode = new Node(data);
} else {
this.rightNode.addNode(data);
}
}
} // 输出所有节点
//中序遍历
public void printNode() {
if (this.leftNode != null) {
this.leftNode.printNode();
}
System.out.print(this.data + " ");//输出语句放最后就是后续遍历
if (this.rightNode != null) {
this.rightNode.printNode();
}
}
}
}

二叉树的测试类

package com.lym.binaryTree;
/**
* 二叉树测试类
*
* @author Administrator
*
*/
public class BinaryTreeDemo { public static void main(String[] args) {
BinaryTree bt = new BinaryTree();
bt.add(3);
bt.add(5);
bt.add(2);
bt.add(1);
bt.add(4);
bt.add(8);
bt.add(10);
bt.add(13);
bt.add(6);
bt.add(9); bt.print();
} }