zoukankan      html  css  js  c++  java
  • 二叉树排序

     1 public class Demo {
     2     public static void main(String[] args) {
     3         MyTree t = new MyTree();
     4         t.add(12);
     5         t.add(9);
     6         t.add(5);
     7         t.add(8);
     8         t.add(11);
     9         t.add(20);
    10         t.zhongxu();
    11     }
    12 }
    13 class MyTree {
    14     // 根节点
    15     private Node root;
    16     // 添加节点
    17     public void add(int data) {
    18         Node n = new Node(data);
    19         // 如果根节点为空,则表明没有根节点,所以这个节点就为根节点
    20         if (root == null) {
    21             root = n;
    22         } else {
    23             // 如果根节点不为空,则调用节点的添加节点方法
    24             this.root.add(n);
    25         }
    26     }
    27     // 中序遍历
    28     public void zhongxu() {
    29         // 如果只有根节点,则return
    30         if (root == null) {
    31             return;
    32         }
    33         // 否则调用根节点的中序遍历
    34         root.zhongxu();
    35     }
    36     // 节点类
    37     class Node {
    38         // 数据
    39         private int data;
    40         // 左节点
    41         private Node left;
    42         // 右节点
    43         private Node right;
    44         // 构造方法,用于给Node进行赋值
    45         public Node(int data) {
    46             this.data = data;
    47         }
    48         // 中序遍历
    49         public void zhongxu() {
    50             // 判断左节点是否为空
    51             if (this.left != null) {
    52                 // 如果左节点不为空,则继续调用左节点的中序遍历,递归调用
    53                 this.left.zhongxu();
    54             }
    55             // 递归结束,输出数据
    56             System.out.println(this.data);
    57             // 判断右节点是否为空
    58             if (this.right != null) {
    59                 // 如果右节点不为空,则继续调用右节点的中序遍历,递归调用
    60                 this.right.zhongxu();
    61             }
    62         }
    63         // 添加节点
    64         public void add(Node n) {
    65             // 判断要添加的数据比此节点的数据的大小,如果大,则添加在右子树,如果小,则添加在左子树
    66             // 递归调用
    67             if (n.data < this.data) {
    68                 if (this.left != null) {
    69                     this.left.add(n);
    70                 } else {
    71                     this.left = n;
    72                 }
    73             } else {
    74                 if (this.right != null) {
    75                     this.right.add(n);
    76                 } else {
    77                     this.right = n;
    78                 }
    79             }
    80         }
    81     }
    82 }

      执行结果:

    1 5
    2 8
    3 9
    4 11
    5 12
    6 20
  • 相关阅读:
    【Mobius绮丽的辗转】莫比乌斯反演
    【BZOJ2301】【HAOI2011】Problem b 莫比乌斯反演
    【JZOJ3636】【BOI2012】Mobile(mobile)
    【JZOJ3640】【COCI2014】utrka
    VMware虚拟机无法上网 无法启动VMnet0等问题【转载】
    java map 遍历
    java List<String> 转换成带逗号的字符串
    javascript 请求action传递中文参数乱码问题
    jQuery ajax 传递JSON数组到Spring Controller
    Eclipse 在线安装properties编辑插件
  • 原文地址:https://www.cnblogs.com/void0720/p/4778072.html
Copyright © 2011-2022 走看看