说白了就是二叉树排序..java中hashset中非基本数据类型的对象比较就是用的这个方式...
package binarytree;
public class BinaryTree {
public static void main(String[] args) {
Node root = null;
int[] ints = { 123, 1234, 324, 2, 1, 12, 31, 4, 3, 3, 466, 7, 87, 87, 56, 456, 5 };
root = new Node(ints[0]);
for (int i = 1; i < ints.length; i++) {
root.add(new Node(ints[i])) ;
}
print(root) ;
}
private static void print(Node node){
if(node.right!=null){
print(node.right) ;
}
System.out.print(node.value+",");
if(node.left!=null){
print(node.left) ;
}
}
static class Node {
public Node(int value) {
this.value = value;
}
int value;
Node left;
Node right;
/**
* 增加一个node
*
* @param node
*/
public void add(Node node) {
if (this.value > node.value) {
if (this.right == null) {
this.right = node;
} else {
this.right.add(node);
}
} else {
if (this.left == null) {
this.left = node;
} else {
this.left.add(node);
}
}
}
}
}
其实我感觉不用怎么解释..大的放左面.小的放右面..就是遍历的时候...如果不用递归比较复杂..用了递归也挺饶人的
分享到:
相关推荐
本篇文章将基于《算法导论》第六章的内容,深入探讨堆排序的实现原理,并通过具体的C语言代码示例来展示其实现过程。 #### 二、堆排序基础概念 1. **二叉堆**:二叉堆是一种特殊的完全二叉树结构,分为最大堆和...
《C++ NOIP算法课程第二章》主要涵盖了贪心算法这一重要的编程策略。贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。在解决特定类型的问题...
常用的数据结构如集合(Set)可以实现数据的去重,而常见的排序算法如快速排序(Quick Sort)、归并排序(Merge Sort)、堆排序(Heap Sort)等,可以根据实际需要选择使用。 2. 车厢重组问题:此问题涉及到对车厢...
1. **排序算法**:排序是算法的基础,可能包括快速排序、归并排序、插入排序、选择排序、堆排序等。每种排序算法都有其独特的时间复杂度和空间复杂度,理解它们的工作原理和应用场景至关重要。 2. **查找算法**:...
1. **排序算法**:排序是最基本的算法之一,包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。每种排序算法都有其适用场景和性能特点,比如快速排序平均时间复杂度为O(nlogn),而冒泡排序则为O(n^2...
第二部分“数据结构”(第3~5章)讲解算法分析中必须掌握的数据结构知识,主要包括基本数据结构、抽象数据结构、递归和树。第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、...
- **堆排序**:利用堆数据结构实现的排序算法,效率较高,平均时间复杂度为O(n log n)。 #### 四、应用与实践 - **实际应用案例**:《算法导论》不仅提供了理论基础,还包含大量实用案例研究,帮助读者理解算法的...
- **排序算法**:如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,它们各有优缺点,适用于不同的场景。 - **查找算法**:二分查找、哈希查找等,它们在处理大量数据时表现出高效性能。 - **图...
《算法与数据结构考研试题精析(第二版)》第10章提供的关于排序算法的详细讨论,无疑为考研学子提供了一个系统学习和掌握排序算法的良好平台。通过针对性的训练和理解,学生们能够在考研过程中遇到的排序相关问题中...
排序是计算机科学中最常见的问题之一,本章介绍了一系列排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。这些算法各有优劣,根据不同的场景选择合适的排序方法至关重要。 4. **第四章:...
第二章 开始(Getting Started) 第三章 函数的增长率(Growth of Functions) 第四章 递归(Recurrences) 第五章 概率分析与随机化算法(Probabilistic Analysis and Randomized Algorithms) 第二部分...
数据结构讲义(严蔚敏版)(含算法源码) 第0章 复习提示 1 一、 教材内容 1 二、 复习提示 1 1. 经典算法 1 2. 绪论 1 3. 线性表 1 ...8. 堆排序 68 9. 归并排序 71 10. 基数排序 72 11. 各种排序方法比较 73
《算法分析与设计(Python)第五章》是一个深入探讨算法的资源包,主要针对使用Python编程语言进行算法实现。在这一章中,我们将探讨算法设计的基本原则、分析方法以及Python在算法实现中的应用。以下是对这个主题的...
本文将深入讲解C语言版《数据结构》第八章中涉及的排序算法,包括归并排序、交换排序(快速排序和冒泡排序)、插入排序、选择排序以及它们之间的比较。 一、归并排序 归并排序是一种分治策略的体现,它将大问题分解...
全书共分为15章,分别讲述了基本概念、数组、简单排序、堆和队列、链表、递归、进阶排序、二叉树、红黑树、哈希表及图形等知识。附录中则提供了运行专题Applet和例程、相关书籍和问题解答。《Java数据结构和算法》...
- 堆排序是一种基于比较的排序算法,通过构建最大堆或最小堆实现排序。在建立初始堆时,将无序序列构建成一个大顶堆或小顶堆,第一个元素是最大值或最小值。例如题目中的选择题1给出了一个排序码,根据堆的性质,B...
"算法设计与分析:第2章 算法分析基础" 本章节主要讲解算法分析的基础知识,包括算法复杂度、渐近表示法、递推关系等概念。 2.1 算法复杂度 算法复杂度是指算法执行所需的时间和存储空间。算法设计者需要在算法的...
通过学习本章内容,读者能够理解并实现堆排序算法。 - **第7章:快速排序** 快速排序是另一种非常有效的排序算法。本章不仅解释了快速排序的核心思想,还讨论了不同情况下的性能表现以及优化策略。 - **第8章:...