Java Tree 树 数据结构

说到树结构就不得不回顾 链表结构 https://www.cnblogs.com/easyidea/p/13371863.html

 如果链表结构中再多一个指针会是什么情况?

 

 

 是不是像树根一样,这就是 树 数据结构。

class TreeNode<E>{      //类名 :Java类就是一种自定义的数据结构
    E val;              //数据 :节点数据 
    TreeNode left;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    TreeNode right;     //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    TreeNode(E val){    //构造方法 :构造方法和类名相同   
        this.val=val;   //把接收的参数赋值给当前类的val变量
    }
}

public class Test{
    public static void main(String[] args){
        TreeNode<Integer> root = new TreeNode<Integer>(3);    //创建根节点
        growth(root,2);                                       //创建深度为3的树结构
        print(root);                                          //打印树结构
    }
    
    
    //通过递归的方式创建树的子节点
    static void growth(TreeNode root,int deep){
        if(deep==0) return;
       
        TreeNode<Integer> left  = new TreeNode<Integer>(deep);    //创建左子节点
        TreeNode<Integer> right = new TreeNode<Integer>(deep);    //创建右子节点
    
        root.left=left;
        root.right=right;
        
        growth(left,deep-1);    //递归调用
        growth(right,deep-1);   //递归调用
        
    }
    
    
    //通过递归的方式打印树结构
    static void print(TreeNode root){
        if(root==null){
            return;
        }
        System.out.print(root.val);
        print(root.left);    //递归调用
        print(root.right);   //递归调用
    }
}

如上面的示例构建的是一颗标准的二叉树结构:

当然树的结构还可以是N叉树:数中每个节点的子节点个数相同,子节点个数是多少就叫做 多少叉树。

如下面3叉树:

三叉树节点:

class TreeNode<E>{      //类名 :Java类就是一种自定义的数据结构
    E val;              //数据 :节点数据 
    TreeNode left;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    TreeNode center;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    TreeNode right;     //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    TreeNode(E val){    //构造方法 :构造方法和类名相同   
        this.val=val;   //把接收的参数赋值给当前类的val变量
    }
}

 

当然树的结构还可以是不规则的,如下图所示:

 

 这样的结构怎么表示呢?

下面给出了一种表示方法:

class TreeNode<E>{      //类名 :Java类就是一种自定义的数据结构
    E val;              //数据 :节点数据 
    
    //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
    //用来存放一堆子节点
    List<TreeNode> childs 
    TreeNode(E val){    //构造方法 :构造方法和类名相同   
        this.val=val;   //把接收的参数赋值给当前类的val变量
    }
}

 

posted @ 2020-08-20 23:53  一文搞懂  阅读(7783)  评论(0编辑  收藏  举报