二叉树算法的简单实现

今天简单了解了下二叉树算法。
二叉树:二叉树是用来存储数据的,就像树一样,它每个节点下会有左右两个节点构(没有也可以)成新的二叉树。
这里写图片描述
了解一下代码

package treepath;
//创建二叉树,其实创建二叉树很简单。
public class TreePath {
    int data; //根节点
    TreePath left;//左树
    TreePath right;//右树
    //为二叉树赋值
    TreePath(int data){
        this.data = data;
        left = null;
        right = null;
    }
    //以下代码是将数组中的数据以图片中的形式展现出来
    //:传入一个数(int data),判断data和根节点的大小
    //如果大于根节点,判断右树是否为空,如果为空将data作为
    //右树的根节点,在形成一个新的二叉树。我的理解 二叉树就是一个根节点加两个空的左右树,之后进行递归,将数据以图片形式展现出来。
    public void insert(TreePath root,int data){
        if(data >root.data){
            if(root.right == null){
                root.right = new TreePath(data);
            }else{
                insert(root.right,data);
            }
        }else{
            if(root.left == null){
                root.left = new TreePath(data);
            }else{
                insert(root.left,data);
            }
        }
    }
}
//不同方式的遍历 
//先序遍历 根左右-》输出左  根-》左树-》右树
//中根遍历 左根右-》 先输出 左树-》根-》右树
//后根遍历 左右根-》 先输出 左树-》右树-》根(方法没写)
package treepath;

public class TreePreoreder {
//先序遍历
    public void inPreoreder(TreePath root){
        if(root != null){
            System.out.print(root.data+"->");
            inPreoreder(root.left);
            inPreoreder(root.right);
        }
    }
//中续遍历
    public void midPreoreder(TreePath root){
        if(root != null){
            midPreoreder(root.left);
            System.out.print(root.data+"->");
            midPreoreder(root.right);
        }
    }
}
//测试
package treepath;

public class TestTree {


     public static void main(String[] args) {
     //将数据存入到数组中,也就是图片中的数据
            int[] array = {12,76,35,22,16,48,90,46,9,40};
            TreePreoreder tp = new TreePreoreder();
    //以12作为起始的节点
            TreePath root = new TreePath(array[0]);
    //循环遍历,最后就是图片中的样子
            for(int i =1;i<array.length;i++){
                root.insert(root, array[i]);
            }
            //先序遍历
            //tp.inPreoreder(root);
            //中序遍历
            tp.midPreoreder(root);
            }
    }

当运行上面的程序后结果如下:
先根遍历:
12-9-76-35-22-16-48-46-40-90-
中根遍历:
9–12–16–22–35–40–46–48–76–90–
后根遍历:
9—16—22—40—46—48—35—90—76—12—

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值