• java 二叉树


    public class BinaryTree {


    private Node root;

    /**
    * 内部类实现结点类,可提高安全性
    */
    private static class Node{

    Node left;
    Node right;
    int data;
    Node(int newData){
    left=null;
    right=null;
    data=newData;
    }

    }
    /**
    * 创建一个空的二叉树
    */
    public BinaryTree(){
    root=null;
    }

    /**
    *递归的插入数值
    * @param data 要插入的数值
    */
    public void insert(int data){
    root =insert(root,data);
    }


    /**
    * 将数值插入到二叉树中,比当前结点小或等于当前结点的插在当前结点的左侧,比当前结点大的数插在当前结点的右侧,每次从根结点开始递归比较
    * @param node 当前的结点,就是根结点,只是每次根结点的左右子孙更新
    * @param data 要插入的数值
    * @return 新排好的二叉树
    */
    private Node insert(Node node,int data){
    if(node==null){
    node=new Node(data);
    }else{
    if(data<=node.data){
    node.left=insert(node.left,data);
    }else{
    node.right=insert(node.right,data);
    }
    }
    return node;
    }

    /**
    * 将数值输入构建二叉树
    * @param data 要插入的数值
    */
    public void buildTree(int[]data){
    for(int i=0;i<data.length;i++){
    insert(data[i]);
    }
    }


    /**
    * 递归打印出二叉树
    */
    public void printTree(){
    printTree(root);
    System.out.println();
    }

    /**
    * 从根结点开始遍历,从树的最高层叶子结点开始输出,从左至右
    * @param node 当前的结点
    */
    private void printTree(Node node){
    if(node==null)
    return;
    printTree(node.left);
    System.out.println(node.data+"");
    printTree(node.right);
    }


    public static void main(String[] args) {

    BinaryTree biTree = new BinaryTree();

    int[] data = { 2, 8, 7, 4 ,9,3,1,6,7,5};

    biTree.buildTree(data);

    biTree.printTree();


    }

    }

  • 相关阅读:
    (三)对极几何
    Pythonista中文教程
    Pythonista中文文档
    资源:《C语言程序设计(第五版)谭浩强》及《C语言程序设计:学习辅导(第五版)谭浩强》PDF下载
    重庆邮电大学2020计算机专硕375分经验分享
    LeetCode题目汇总
    CCF-CSP题目汇总
    CCF-CSP:201909-3字符画
    CCF-CSP:201909-2小明种苹果(续)
    CCF-CSP:201909-1小明种苹果
  • 原文地址:https://www.cnblogs.com/wangruihua-521/p/3166782.html
Copyright © 2020-2023  润新知