吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 523|回复: 0
收起左侧

[学习记录] 【笔记】java--代码实现二叉树部分功能

[复制链接]
三木零 发表于 2022-3-26 16:48
二叉树的每一个节点最多只有两个节点
特性:存入数据然后输出的时候是自动排好序的
算法:当第一个数据的添加的时候,直接回创建根节点并存入数据,当第二个数据添加的时候,会跟第一个节点比较
如果大于根节点:存储在节点左边
如果小于根节点:存储在节点右边
如果是等于的话存哪边都可以
=====================代码============================
[Java] 纯文本查看 复制代码
package com.test9;

// 二叉树算法实现
public class BinaryTree {
    // 根节点中只存放一个Node
    private Node root;

    // 添加数据的方法
    public void add(int data) {
        // 先判断是否有根节点,没有的话直接new一个,顺便把数据传入
        if (this.root == null) {
            this.root = new Node(data);
        } else {
            // 否则调用节点的添加数据方法
            this.root.addNode(data);
        }
    }

    // 查看所有数据
    public void print() {
        if (this.root == null) {
            System.out.println("null");
        } else {
            System.out.print("[");
            this.root.printNode();
            System.out.print("]");
        }
    }

    private static class Node {
        // 子节点也有数据和左右节点
        private final int data;
        private Node left;
        private Node right;

        // 使用构造方法来添加数据
        public Node(int data) {
            this.data = data;
        }

        // 添加数据的方法
        public void addNode(int data) {
            // 如果比根节点的数据大,则放左节点,否则放右节点
            if (this.data > data) {
                // 如果左节点还是有数据,则再下一层
                if (this.left == null) {
                    this.left = new Node(data);
                } else {
                    this.left.addNode(data);
                }
            } else {
                if (this.right == null) {
                    this.right = new Node(data);
                } else {
                    this.right.addNode(data);
                }
            }
        }

        // 查看所有数据
        public void printNode() {
            // 先判断左节点是否为空
            if (this.left != null) {
                // 不为空则进入下一层
                this.left.printNode();
                System.out.print(",");
            }
            // 如果为空则输出本节点
            System.out.print(this.data);
            // 再判断右节点是否为空,不为空则进入下一层
            if (this.right != null) {
                System.out.print(",");
                this.right.printNode();
            }
        }
    }
}

====================Main方法中============================
[Java] 纯文本查看 复制代码
package com.test9;

public class Main {
    public static void main(String[] args) {
        BinaryTree binaryTree = new BinaryTree();
        binaryTree.add(16);
        binaryTree.add(20);
        binaryTree.add(15);
        binaryTree.add(14);
        binaryTree.add(12);
        binaryTree.print();
    }
}

======================运行结果================================
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 06:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表