public class CreatBiTree {
/*
* 题目:①用Java代码模拟实现一个二叉树结构②创建该二叉树③遍历该二叉树。
*
* 思路:二叉树:一种树状结构,一棵二叉树的“结点”(Node)最多只能拥有2个子结点,也就是度小于或等于2。
* 1)二叉树的结点个数是有限,而且可以没有结点。
* 2)一棵二叉树的树根下可以分为两个子树称为“左子树”(Left Subtree)和“右子树”(Right Subtree)
* 3)前、中、后序遍历。
*/
private Node root;
/*
* 创建二叉树节点,利用内部类方式。
* @author lhy
*/
private class Node{
private Node left;//定义左节点
private Node right;//定义右节点
private int value;//节点值。
public Node(int value){
this.left = null;
this.right = null;
this.value = value;
}
}
public CreatBiTree(){
root = null;
}
/*
* 递归创建二叉树,不过多解释了,直接上代码。
*/
public void buildTree(Node node,int value){
if(root == null){
root = new Node(value);
}else{
if(value < node.value){
if(node.left == null){
node.left = new Node(value);
}else{
buildTree(node.left,value);
}
}else{
if(node.right == null){
node.right = new Node(value);
}else{
buildTree(node.right,value);
}
}
}
}
/*
* 前序遍历也称先序遍历。
*/
public void preOrder(Node node){
if(node != null){
System.out.print(node.value+" ");
preOrder(node.left);
preOrder(node.right);
}
}
/*
* 中序遍历
*/
public void inOrder(Node node){
if(node != null){
inOrder(node.left);
System.out.print(node.value+" ");
inOrder(node.right);
}
}
/*
* 后序遍历
*/
public void postOrder(Node node){
if(node != null){
postOrder(node.left);
postOrder(node.right);
System.out.print(node.value+" ");
}
}
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};
CreatBiTree bTree = new CreatBiTree();
for (int i = 0; i < a.length; i++) {
bTree.buildTree(bTree.root, a[i]);
}
System.out.println("先序遍历的结果是:");
bTree.preOrder(bTree.root);
System.out.println("\n中序遍历的结果是:");
bTree.inOrder(bTree.root);
System.out.println("\n后序遍历的结果是:");
bTree.postOrder(bTree.root);
}
}
JAVA 实现二叉树 递归
最新推荐文章于 2022-06-29 16:45:23 发布