码迷,mamicode.com
首页 > 编程语言 > 详细

java学习-排序二叉树

时间:2020-01-20 19:04:32      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:art   info   important   mic   pac   list   color   log   上层   

(排序)二叉树的创建及中序遍历

写起来比C复杂一点,思路大同小异~

 1 package Collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 /*
 6  * (排序)二叉树的创建及中序遍历
 7  */
 8 public class Node {
 9     public Node LNode;
10     public Node RNode;
11     public Object value; // 结点的值
12 
13     public void add(Object v) { // 传入的参数是要加入二叉树的新结点的值,是数值!!!
14         if (this.value == null) {
15             value = v;
16         } else {
17             if ((Integer) v > (Integer) value) { // 新增的结点的值大于当前结点的值
18                 if (RNode == null) { // 当前结点右子树为空,要新建右子树结点
19                     RNode = new Node(); // 使当前结点的右子树指向新增的结点,此时RNode的value自然没有赋值,是null
20                 }
21                 // 如果RNode非空,说明该结点右子树非空,则在右子树的基础上继续调用add以把数值v添加到二叉树正确的位置,
22                 // 如果RNode为空,自然是上面新建右子树结点,并且由于此时RNode的value肯定是null,于是调用本身的add方法,把v赋值到RNode的value
23                 RNode.add(v);
24             } else { // 新增的结点的值小于当前结点的值
25                 if (LNode == null) {
26                     LNode = new Node();
27                 }
28                 LNode.add(v);
29             }
30         }
31 
32     }
33 
34     // 二叉树的中序遍历,若二叉树本身是排序二叉树,则中序遍历能“有序输出”所有结点数值
35     public List<Object> values() { // 返回类型是List
36         List<Object> values = new ArrayList<Object>(); // 用来保存中途遍历的结果
37         if (LNode != null) {
38             values.addAll(LNode.values()); // 左子树非空,递归的“递”
39         }
40 
41         values.add(value); // 把当前结点数值保存到values列表
42 
43         if (RNode != null) {
44             values.addAll(RNode.values()); // 右子树非空,递归的“递”
45         }
46 
47         return values; // 递归的“归”,先上层返回中途遍历结果
48 
49     }
50 
51     public static void main(String[] args) {
52         int randoms[] = new int[] { 67, 7, 30, 73, 10, 0, 78, 81, 10, 74 };
53         Node roots = new Node();
54         for (int number : randoms) {    //建立(排序)二叉树
55             roots.add(number);
56         }
57         System.out.println(roots.values());  //打印中序遍历结果
58     }
59 }

效果图:

技术图片

java学习-排序二叉树

标签:art   info   important   mic   pac   list   color   log   上层   

原文地址:https://www.cnblogs.com/gilgamesh-hjb/p/12218895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!