**最近刷面试题的时候发现各大公司对二叉树的算法情有独钟,所以花时间研究了一下,用JAVA实现了包括二叉树的添加节点,前序中序后序遍历,按层遍历,以及树的深度的计算。
在贴代码之前对树的原意考的基本理念复习一下。**
- 树是属于一种非线性的数据结构
- 存储分为顺序存储用数组和链式存储
- 树通常研究的是二叉树
- 二叉树又分为二叉堆和二叉查找树
- 二叉堆一般用顺序存储来进行存储 因为二叉堆一般都是完全二叉树
用顺序存储比较节省空间并且对上溢和下溢的操作也相对容易通过对索引进行操作 - 二叉堆特点父节点大于左孩子及右孩子
- 二叉查找树一般用链式存储来进行操作 这也是我们通常用的
左孩子小于当前节点 右孩子大于当前节点
下面就是对二叉查找树的一系列操作了一 节点类的构建
public class Node {
private String data;//当前值
private Node leftNode;//左孩子
private Node rightNode;//右孩子
public Node(){
}
public Node(String data,Node leftNode,Node rightNode){
this.data = data;
this.leftNode = leftNode;
this.rightNode = rightNode;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Node getLeftNode() {
return leftNode;
}
public void setLeftNode(Node leftNode) {
this.leftNode = leftNode;
}
public Node getRightNode() {
return rightNode;
}
public void setRightNode(Node rightNode) {
this.rightNode = rightNode;
}
}
二。树的一系列操作 注释写的很清楚
import java.util.LinkedList;
public class Tree {
public