November 14, 2016

用Java实现二叉树

1.构建二叉树

首先,创建一个节点类

/**

* 节点类

*/

public class TreeNode<T> {

private int index;

private T data;

private TreeNode<T> leftChild;

private TreeNode<T> rightChild;

public TreeNode(int index, T data) {

this.index = in......

October 29, 2016

算法-约瑟夫环问题

约瑟夫环问题

10个人围成一个圆圈,编号为1~10,从第一号开始报数,报到3的倍数的人离开,* 一直数下去,直到最后只有一个人,* 求此人编号

解题代码

package com.che.carcheck.rxjava;

import org.junit.Test;

import java.util.ArrayList;

import java.util.List;

/**

* 约瑟夫问题

* <p>

* 10个人围成一个圆圈,编号为1~10(令N=10),

* 从第一号开始报数,报到3(令M=3)的倍数的人离开,

* 一直数下去,直到最后只有一个人......

October 29, 2016

7种排序算法

这里写图片描述

这里抽象出了一个排序基类:

package senior.algorithm.sort;

/**

* 作者:余天然 on 16/7/8 下午4:11

*/

public abstract class BaseSort {

public abstract int[] sort(int[]......

October 29, 2016

二叉查找树图示

二叉查找树(Binary Search Tree),也称二叉搜索树,是指一棵空树或者具有下列性质的二叉树:

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

任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

任意节点的左、右子树也分别为二叉查找树;

没有键值相等的节点。

二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(log n)。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、multiset、关联数组等。(摘自维基百科)

图1↓ :查找 BST 中的某个元素

在二叉搜索树b中查找x的过程为......