如果一棵数中的每个结点有0、1或者2个孩子节点,那么这棵树就称为二叉树,下面是Java中二叉树的定义,包括三种递归遍历方法,非递归遍历会在后一篇文章中介绍。
import stack.LLStack;
public class BinaryTreeNode<T> {
/**
* 本类中使用的栈为自定义栈,也可以使用java中封装的栈
*/
private T data;
private BinaryTreeNode<T> left; // 左子树
private BinaryTreeNode<T> right; // 右子树
public BinaryTreeNode(){}; // 空参构造
public BinaryTreeNode(T data) { // 有参构造
super();
this.data = data;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public BinaryTreeNode<T> getLeft() {
return left;
}
public void setLeft(BinaryTreeNode<T> left) {
this.left = left;
}
public BinaryTreeNode<T> getRight() {
return right;
}
public void setRight(BinaryTreeNode<T> right) {
this.right = right;
}
/***********************基本操作**************************/
public void preOrder(BinaryTreeNode<T> root){ // 前序遍历递归算法
if(root != null){
System.out.println(root.getData());
preOrder(root.getLeft());
preOrder(root.getRight());
}
}
public void inOrder(BinaryTreeNode<T> root){ // 中序遍历递归算法
if(root != null){
inOrder(root.getLeft());
System.out.println(root.getData());
inOrder(root.getRight());
}
}
public void postOrder(BinaryTreeNode<T> root){ // 中后序遍历递归算法
if(root != null){
postOrder(root.getLeft());
postOrder(root.getRight());
System.out.println(root.getData());
}
}
完整代码可访问我的GitHub:https://github.com/StriverLi/Data-Structures-and-Algorithms-in-Java/blob/master/src/tree/BinaryTreeNode.java