Java Tree 树 数据结构
阅读原文时间:2023年07月09日阅读:2

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

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

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

class TreeNode{ //类名 :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 root = new TreeNode(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{ //类名 :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{ //类名 :Java类就是一种自定义的数据结构
E val; //数据 :节点数据

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

}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章