三木零 发表于 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方法中============================
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();
    }
}

======================运行结果================================
页: [1]
查看完整版本: 【笔记】java--代码实现二叉树部分功能