• 二叉树


    class BinaryTree {
    class Node { // 声明一个节点类
    private Comparable data; // 保存具体的内容
    private Node left; // 保存左子树
    private Node right; // 保存右子树

    public Node(Comparable data) {
    this.data = data;
    }

    public void addNode(Node newNode) {
    // 确定是放在左子树还是右子树
    if (newNode.data.compareTo(this.data) < 0) { // 内容小,放在左子树
    if (this.left == null) {
    this.left = newNode; // 直接将新的节点设置成左子树
    } else {
    this.left.addNode(newNode); // 继续向下判断
    }
    }
    if (newNode.data.compareTo(this.data) >= 0) { // 放在右子树
    if (this.right == null) {
    this.right = newNode; // 没有右子树则将此节点设置成右子树
    } else {
    this.right.addNode(newNode); // 继续向下判断
    }
    }
    }

    public void printNode() { // 输出的时候采用中序遍历
    if (this.left != null) {
    this.left.printNode(); // 输出左子树
    }
    System.out.print(this.data + " ");
    if (this.right != null) {
    this.right.printNode();
    }
    }
    };

    private Node root; // 根元素

    public void add(Comparable data) { // 加入元素
    Node newNode = new Node(data); // 定义新的节点
    if (root == null) { // 没有根节点
    root = newNode; // 第一个元素作为根节点
    } else {
    root.addNode(newNode); // 确定是放在左子树还是放在右子树
    }
    }

    public void print() {
    this.root.printNode(); // 通过根节点输出
    }
    };

    public class ComparableDemo03 {
    public static void main(String args[]) {
    BinaryTree bt = new BinaryTree();
    bt.add(8);
    bt.add(3);
    bt.add(3);
    bt.add(10);
    bt.add(9);
    bt.add(1);
    bt.add(5);
    bt.add(5);
    System.out.println("排序之后的结果:");
    bt.print();
    }
    };

  • 相关阅读:
    iOS设计模式
    Objective-C的可变是如何实现的?
    很好的UI动效设计参考
    MAC OS Finder 中快速定位指定路径
    IOS应用沙盒文件操作
    Java -- 单例模式
    Java眼中的XML--文件读取--2 应用SAX方式解析XML
    Java眼中的XML--文件读取--1 应用DOM方式解析XML
    配置JDK环境变量
    IOS开发之SVN的使用
  • 原文地址:https://www.cnblogs.com/jianming-chan/p/3276426.html
Copyright © 2020-2023  润新知