• 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变量
        }
    }
  • 相关阅读:
    Centos6.8通过yum安装mysql5.7
    查看mysql已安装
    canal client leader
    es按时间段统计总数
    nginx负载
    es 查看mapping 设置max_result_window
    es 修改默认bool条件个数
    less
    Less配置环境
    JavaScript面向对象与原型
  • 原文地址:https://www.cnblogs.com/easyidea/p/13536656.html
Copyright © 2020-2023  润新知