数据结构-树(1)

/**
 * 计算机的存储结构有顺序存储和链式存储
 * 结点的度:结点拥有的子树数
 * 叶结点/终端结点:度为0的结点
 * 分支结点/非终端结点:度不为0
 * 内部结点:除根结点外的分支结点
 *
 * 树的表示:双亲表示法、孩子表示法、孩子兄弟表示法
 * 二叉树:每个结点最多2颗子树;左右有顺序;即使只有一颗子树,也要区分左右
 * 特殊二叉树:
 *      斜树:左斜树、右斜树  结点的个数与二叉树的深度相同
 *      满二叉树:所有结点都存在左子树和右子树,并且所有叶子都在同一层上
 *          叶子只能出现在最下一层
 *          非叶子结点的度一定是2
 *          同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多
 *      完全二叉树:满二叉树一定是完全二叉树。看树的示意图,给每个结点按照结构【逐层顺序】编号,无空挡就是,否则不是
 *          叶子结点只能出现在最下两层
 *          最下层的叶子一定集中在左部连续位置
 *          倒数二层,若有叶子结点,一定都在右部连续位置
 *          如果结点度为1,则只有左孩子,不存在只有右子树的情况
 *          同样结点数的二叉树,完全二叉树的深度最下
 */
public class MyTree {
    private String data;
    private MyTree ltree;
    private MyTree rtree;

    public void setData(String data) {
        this.data = data;
    }

    public MyTree(String data) {
        this.data = data;
    }

    public String getData() {
        return data;
    }



    public MyTree getLtree() {
        return ltree;
    }

    public void setLtree(MyTree ltree) {
        this.ltree = ltree;
    }

    public MyTree getRtree() {
        return rtree;
    }

    public void setRtree(MyTree rtree) {
        this.rtree = rtree;
    }
}

创建一颗树

MyTree a=new MyTree("A");
        MyTree b=new MyTree("B");
        MyTree c=new MyTree("C");
        MyTree d=new MyTree("D");
        MyTree e=new MyTree("E");
        MyTree f=new MyTree("F");
        MyTree g=new MyTree("G");
        MyTree h=new MyTree("H");
        MyTree i=new MyTree("I");
        MyTree j=new MyTree("J");
        MyTree k=new MyTree("K");
        

        a.setLtree(b);
        a.setRtree(c);

        b.setLtree(d);
        b.setRtree(e);

        d.setLtree(h);

        h.setRtree(k);

        c.setLtree(f);
        c.setRtree(g);

        f.setLtree(i);

        g.setRtree(j);
//前序遍历算法  ABDHKECFIGJ
    public static void pre(MyThreadTree myTree){
        if(myTree==null){
            return;
        }
        System.out.print(myTree.getData());
        pre(myTree.getLtree());
        pre(myTree.getRtree());
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值