1、二叉树:二叉树是每个结点最多有两个子树的树结构。
2、二叉排序树:一颗空树,或者左子树值小于根节点,右子树大于根节点。
3、遍历方式:
先序遍历:先根节点再左子树再右子树
中序遍历:先左子树再根节点再右子树
后序遍历:先左子树再右子树再根节点
4、二叉树的生成、查询某一节点、查询最大值、查询最小值、删除节点、插入节点、先序遍历、中序遍历、后序遍历,见代码。
package shuju;
/**
* 二叉排序树
* @author Administrator
*
*/
public class BinaryTree {
public static void main(String[] args) {
final int[] values = { 1, 3, 4, 5, 2, 8, 6, 7, 9, 0 };
Node root = null;//定义根节点
root = new Node(values[0], null, null);//设定数组第一个元素为根节点
for (int i = 1; i < values.length; i++) {
//如果值在二叉排序树中不存在则插入,存在不插入
if(search(root, values[i])==null){
createBinaryTree(root, values[i]);//循环调用,建立二叉树。
}
}
//中序排序,并输出二叉树
inOrderTransval(root);
System.out.println();
//先序遍历
fistInOrderTransval(root);
System.out.println();
//后序遍历
lastInOrderTransval(root);
System.out.println();
//获取最大值
System.out.println(getMax(root));
//获取最小值
System.out.println(getMin(root));
//寻找某一节点二叉树下是否包含某值
System.out.println(search(root, 5).getValue());
//删除某一节点
remove(search(root, 3));
inOrderTransval(root);
System.out.println();
//插入值到二叉排序树中
InsertBST(root, 3);
inOrderTransval(root);
}
/**
* 生成二叉树
* @param node 父二叉树
* @param value 要新添加进二叉树的值
* @return
*/
public static Node createBinaryTree(Node node, int value) {
if(value >