• 二叉排序树


    特点:

      若左子树不空,则左子树上所有结点的值均小于它的根结点的值;

      若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;

      左、右子树也分别为二叉排序树,这点很重要,

    代码:

     1 package Tree;
     2 
     3 public class SortTree {
     4     public static void main(String[] args) {
     5       //添加
     6       int array[] = {1,4,6,2,8,3,12,90,45,32,89};
     7       BinarySortTree binarySortTree = new BinarySortTree();
     8       //循环添加结点
     9       for (int i = 0 ; i < array.length ; i++){
    10           binarySortTree.addNode(new Node(array[i]));
    11       }
    12 
    13       //中序遍历
    14       binarySortTree.preOrder();
    15     }
    16 }
    17 class BinarySortTree{
    18     //根结点
    19     private Node root;
    20 
    21     public void setRoot(Node root) {
    22         this.root = root;
    23     }
    24 
    25     //添加结点
    26     public void addNode(Node node){
    27         if (this.root == null){
    28             root = node;
    29         }else {
    30             this.root.addNode(node);
    31         }
    32     }
    33 
    34     //先序遍历
    35     public void preOrder(){
    36         if (this.root != null){
    37             this.root.preOrder();
    38         }else {
    39             System.out.println("空树");
    40         }
    41     }
    42 }
    43 class Node{
    44     int value;//结点的值
    45     Node left;//左子树
    46     Node right;//右子树
    47     public Node(int value) {
    48         this.value = value;
    49     }
    50     @Override
    51     public String toString() {
    52         return "Node{" +
    53                 "value=" + value +
    54                 '}';
    55     }
    56     //添加结点
    57     public void addNode(Node node){
    58         if (node == null){
    59             return;
    60         }
    61         if (node.value < this.value){
    62             if (this.left == null){
    63                 this.left = node;
    64             }else {
    65                 this.left.addNode(node);
    66             }
    67         }
    68         else {
    69             if (node.value > this.value){
    70                 if (this.right == null){
    71                     this.right = node;
    72                 }else {
    73                     this.right.addNode(node);
    74                 }
    75             }
    76         }
    77     }
    78 
    79     //前序遍历
    80     public void preOrder() {
    81         //输出root结点
    82         System.out.println(this);
    83         if (this.left != null) {
    84             this.left.preOrder();//递归左子结点
    85         }
    86         if (this.right != null) {
    87             this.right.preOrder();
    88         }
    89     }
    90 }
    生命不止,折腾不息
  • 相关阅读:
    Shell脚本编程之Shell函数
    Shell脚本编程之流程控制
    Shell脚本编程之Shell命令
    MySQL5.6的optimizer_trace
    Cgroup
    Python的__main__.py用法
    Git提交到github上
    mysql timeout
    数据库大牛
    update and的坑
  • 原文地址:https://www.cnblogs.com/steakliu/p/11432507.html
Copyright © 2020-2023  润新知