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变量
        }
    }
  • 相关阅读:
    NodeJS学习之3:express和Utility的配合使用
    NodeJS学习之2:express版的Hello World
    NodeJS学习之1:express安装
    9:Node.js GET/POST请求
    8:Node.js 文件系统
    7:Node.js 全局对象
    PowerShell工作流学习-4-工作流中重启计算机
    PowerShell工作流学习-3-挂起工作流
    PowerShell工作流学习-2-工作流运行Powershell命令
    PowerShell工作流学习-1-嵌套工作流和嵌套函数
  • 原文地址:https://www.cnblogs.com/easyidea/p/13536656.html
Copyright © 2011-2022 走看看