这篇博客主要是总结一下Java中二叉树这种数据结构。
1.二叉树的原理分析
数是一种重要的非线性数据结构,直观的看,它是数据元素(在树中称为节点)按分支关系组织起来的结构。二叉树是每个节点最多有两个子树的有序数。通常子数被称作左子树和右子树
二叉树算法的排序规则:
(1)选择第一个元素作为根节点
(2)之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
(3)最后按照中序遍历方式进行输出则可以得到排序结果(左->根->右)
2.二叉树的算法实现
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 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.data<=data)
{
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.println(this.data);
if(this.right!=null)
{
this.right.printNode();
}
}
}
}
public class BinaryTreeDemo {
public static void main(String args[])
{
//只使用外部类,在外部类的方法中调用内部的方法
//外部类的方法只是针对于根节点而言的
BinaryTree bt = new BinaryTree();
bt.add(8);
bt.add(3);
bt.add(10);
bt.add(1);
bt.add(6);
bt.add(14);
bt.add(4);
bt.add(7);
bt.add(13);
bt.print();
}
}