zoukankan      html  css  js  c++  java
  • 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();


    }

    }

  • 相关阅读:
    图像
    链接
    列表
    常见的文本标签
    注释有哪些作用?你会用使用注释来做什么?
    如何使用浏览器查看源代码?查看源码的快捷方式是什么?
    编辑HTML源代码
    <html>,<head>,<body>,<title>的作用
    HTML中的标签和属性
    记录Git的安装过程
  • 原文地址:https://www.cnblogs.com/wangruihua-521/p/3166782.html
Copyright © 2011-2022 走看看