栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构之二叉树(2):构建与输出

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构之二叉树(2):构建与输出

我们之前已经学习过单链表的构建,而二叉树的构建和单链表大同小异。

还是先写一个类来构建二叉树的节点。

public class TreeNode {
    public Integer value;
    public TreeNode leftChild;
    public TreeNode rightChild;
    public TreeNode(Integer value) {this.value=value;}
}

然后再定义一个测试类方便后续测试。

public class Test {
    public static void main(String[] args) {
        BinaryTree binaryTree = new BinaryTree(1);
        BinaryTree binaryTree = new BinaryTree(2);
        BinaryTree binaryTree = new BinaryTree(3);
}

现在的话我们只是构建了三个毫不相干的节点,为了让它们联系起来形成二叉树,我们还得创建一个管理类并写相应的方法来构建二叉树以及实现对二叉树的一些基本操作。

构建二叉树有两种方法。

方法一:

public class BinaryTree {

    
    public TreeNode root;
    public void insert(Integer value) {
        //新建一个节点
        TreeNode newNode = new TreeNode(value);
        if (root == null) {
            root = newNode;
            return;
        }
        //创建节点进行遍历
        TreeNode currentNode = root;
        TreeNode parentNode;
        while(true){
            parentNode = currentNode;
            if(newNode.value > currentNode.value) {
                currentNode = currentNode.rightChild;
                if(currentNode == null){
                    parentNode.rightChild = newNode;
                    return;
                }
            } else{
                currentNode = currentNode.leftChild;
                if(currentNode == null){
                    parentNode.leftChild = newNode;
                    return;
                }
            }
        }
    }

方法二(递归):

public TreeNode insert(Integer value, TreeNode node){
        //新建一个节点
        TreeNode newNode = new TreeNode(value);
        if (root == null) {
            root = node;
            return root = newNode;
        }
        if(node.value < value){
            if(node.rightChild == null){
                node.rightChild = newNode;
                return root;
            }
            return insert(value,node.rightChild);
        } else {
            return insert(value,node.leftChild);
        }
    }

二叉树的输出我们可以利用jdk当中的队列来实现。

  // 队列 --> 一个数组 / 链表 --> 入队列和出队列的方法
    // add() pop()
    public void Order(){
        linkedList queue = new linkedList<>();
        queue.add(root);
        while (!queue.isEmpty()){
            TreeNode treeNode = queue.pop();
            System.out.println(treeNode.value);
            if (treeNode.leftChild != null){
                queue.add(treeNode.leftChild);
            }
            if (treeNode.rightChild !=null){
                queue.add(treeNode.rightChild);
            }
        }
    }

主要用的是add方法(节点的添加)和pop方法(输出头结点)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692588.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号