目录
搜索二叉树概念介绍
搜索二叉树是一种方便检索的二叉树数据结构,其特点是左节点以及左子树上的点<根节点<右节点以及右子树结点的值,那么构建的搜索二叉树就是有序树。其结构为:
搜索二叉树遍历和实现
搜索二叉树和二叉树类似,同样又前序遍历,中序遍历和后序遍历,其通通可以用递归的方式实现。java实现如下(其他语言亦是异曲同工):
public class TowSearchTree {
public static TreeNode tree = null;
public static void main(String[] args) {
int[] arr ={5,2,1,4,45,61,7,2,9};
//搜索二叉树的建立
TreeNode fir = insertNode(arr[0],tree);
for (int i=1; i<arr.length; i++){
TreeNode ee = insertNode(arr[i],fir);
}
//结点遍历
print(fir);
//搜索二叉树前序遍历
System.out.println("前序遍历:");
listTreeFromFront(fir);
//搜索二叉树中序遍历
System.out.println("中序遍历:");
listTreeFromMid(fir);
//搜索二叉树后序遍历
System.out.println("后续遍历:");
listTreeFromAfter(fir);
}
public static void print(TreeNode a){
System.out.println(a.node);
if(a.left != null){
System.out.println(a.node+"左孩子");
System.out.println(a.left.node);
}
if(a.right != null){
System.out.println(a.node+"右孩子");
System.out.println(a.right.node);
}
System.out.println("----------------");
if(a.left != null){
print(a.left);
}
if(a.right != null){
print(a.right);
}
}
public static TreeNode insertNode(int value,TreeNode tree){
if(tree == null){
TreeNode tre = new TreeNode();
tre.node = value;
return tre;
}
if(tree.node < value){
tree.right = insertNode(value,tree.right);
} else {
tree.left = insertNode(value,tree.left);
}
return tree;
}
public static void listTreeFromFront(TreeNode tree0){
if (tree0 != null){
System.out.print(tree0.node+" ");
listTreeFromFront(tree0.left);
listTreeFromFront(tree0.right);
}
}
public static void listTreeFromMid(TreeNode tree1){
if (tree1 != null){
listTreeFromMid(tree1.left);
System.out.print(tree1.node+" ");
listTreeFromMid(tree1.right);
}
}
public static void listTreeFromAfter(TreeNode tree2){
if(tree2 != null){
listTreeFromAfter(tree2.left);
listTreeFromAfter(tree2.right);
System.out.print(tree2.node+" ");
}
}
}
class TreeNode{
int node = 0;
TreeNode left = null;
TreeNode right = null;
}
结果为:
图示为:
前序,中序,后续遍历为:
"如果你尚有余暇,不妨从头阅读一次本书" ----<<大话数据结构>>