zoukankan      html  css  js  c++  java
  • 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变量
        }
    }
  • 相关阅读:
    unityshader(属性)
    unity_实用小技巧(相机跟随两个主角移动)
    unity_实用小技巧(空指针错误)
    unity_实用小技巧(避免游戏对象被销毁时声音消失)
    php把网络图片转Base64编码。(php将图片链接直接转化为base64编码)
    TP5.0 where数组高级查询
    使用Guzzle执行HTTP请求
    JWT实战:使用axios+PHP实现登录认证
    有关JWT(Json Web Token)的那些事
    thinkphp5一键清除缓存
  • 原文地址:https://www.cnblogs.com/easyidea/p/13536656.html
Copyright © 2011-2022 走看看