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变量 } }