数结构与算法--树结构

树(tree)

这里有几个规定:

图中的结构就像一棵倒过来的树,最顶部的节点就是“根节点 (root 节点)”
每棵树至多只有一个根节点
根节点生出多个孩子节点,每个孩子节点只有一个父节点,每个孩子节点又生出多个孩子
父亲节点 (parent) 和孩子节点 (child) 是相对的
没有孩子节点的节点成为叶子节点 (leaf)

树的相关术语

在这里插入图片描述

1)节点的度:
  一个节点直接含有的子树个数,上图中3的度为2,10的度为1;
2)树的度:
  一个树里面节点的度的最大值。例如上图的树的度为2;
3)节点的层次:
  从根节点开始算起,根节点算第一层,上图中3为第二层,13为第四层;
4)树的高度:
  从叶节点开始,从下往上增加;
5)树的深度:
  从根节点开始,从上往下增加;

1、数组实现

package treeTest;

public class TreeNodebyArray<item> {
    private item mData;
    private int mParent;
    
    public TreeNodebyArray(item data,int parent){
        mData=data;
        mParent=parent;
    }
    
    public item getData(){
        return mData;
    }
    
    public int getMParent(){
        return mParent;
    }
    
    public void setData(item data){
        mData=data;
    }
    
    public void setParent(int parent){
        mParent=parent;
    }
    public static void main(String[] args){
                TreeNode[] arrayTree = new TreeNode[10];
        }
}

2、链表实现:


package treeTest;

public class TreeNodebyLinkList<item> {
    private item mData;
    private TreeNodebyLinkList parent;
    private TreeNodebyLinkList kid;
    
    public TreeNodebyLinkList(item data,TreeNodebyLinkList parent){
        mData=data;
        this.parent=parent;
    }
    
    public item getData() {
        return mData;
    }

    public void setData(item data) {
        mData = data;
    }

    public TreeNodebyLinkList getParent() {
        return parent;
    }

    public void setParent(TreeNodebyLinkList parent) {
        this.parent = parent;
    }

    public TreeNodebyLinkList getChild() {
        return kid;
    }

    public void setChild(TreeNodebyLinkList kid) {
        this.kid = kid;
    }

    public static void main(String[] args){
        LinkedList<LinkedTreeNode> linkedTree = new LinkedList<>();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值