上篇咱们说到二叉树的一种建立方法及三种遍历方法的递归非递归算法。这篇换了一种新的建立方法,用先根遍历递归的思路建立二叉树,用递归的方法计算深度,用中根递归和非递归方法遍历整个二叉树。
BinaryTree.h
//二叉树的建立和遍历
#ifndef BINARYTREE_H_
#define BINARYTREE_H_
#include
typedef int T;
struct Node
...
分类:
其他好文 时间:
2015-06-10 09:04:51
阅读次数:
160
二叉树定义:
1.有且仅有一个特定的称之为根root的结点
2.当n>1时,除根结点之外的其余结点分为两个互不相交的子集。他们称为二叉树的左子树和右子树。
二叉树的一种建立方法:
若对有n个结点的完全二叉树进行顺序编号(1=1)的结点。
当i=1时,该结点为根,它无双亲结点;
当i>1时,该节点的双亲编号为[i/2];
若2i
当2i+1
利用上个性质,对任意二叉树,先按满二叉树...
分类:
其他好文 时间:
2015-06-09 10:04:17
阅读次数:
223
题目描述想兑换100元钱,有1,2,5,10四种钱,问总共有多少兑换方法递归解法#include
using namespace std; const int N = 100;
int dimes[] = {1, 2, 5, 10};
int arr[N+1] = {1}; int coinExchangeRecursion(int n, int m) //递归方式实现...
分类:
其他好文 时间:
2015-06-09 09:57:23
阅读次数:
534
简单的遍历一个树形结构数据的几种方法、非递归方法效率最好。 1 (function (window, undefined) { 2 var treeNodes = [ 3 { 4 id: 1, 5 name: '1', ...
分类:
其他好文 时间:
2015-05-29 11:21:04
阅读次数:
128
这几日又把二叉树的递归写了一遍,原来是用C写的,自己写了一个栈,这一次直接用的C++,使用了自带的栈结构。代码如下: 1 /************************************************************************* 2 > Au...
分类:
其他好文 时间:
2015-05-24 00:03:30
阅读次数:
172
题目:将某个正整数分解质因式,并输出分解结果。代码:1、递归2、非递归#include using namespace std;// recursivevoid prim1(int m,int n){ if(m>n){ while(m%n!=0) n++; m=m/...
分类:
其他好文 时间:
2015-05-13 18:57:25
阅读次数:
106
链表反转是数据结构的基本功,主要有递归和非递归两种实现方式。我们一一介绍如下:
1. 非递归实现
主要包括如下4步:
1)如果head为空,或者只有head这一个节点,return head即可;
2)从头到尾遍历链表,把reversedHead赋值给当前节点的next;
3)当前节点赋值给reversedHead;
4)遍历结束,ret...
分类:
其他好文 时间:
2015-05-05 00:05:46
阅读次数:
107
publicstaticintFoo(inti){if(i<3){return1;}else{returnFoo(i-1)+Foo(i-2);}}staticvoidMain(string[]args){Console.WriteLine(Foo(8));}
非递归:
#include
#include
int partition(int s[], int i, int j)
{
int value = 0;
int flag = 1; //判断该从头循环还是尾循环
value = s[i];
while(i<j)
{
switch(flag)
{
case 0:
if(s[i] < value)
i++;
...
分类:
编程语言 时间:
2015-03-18 12:26:19
阅读次数:
130
部分理论和图来自:http://www.cnblogs.com/jingmoxukong/p/4308823.html (侵删)归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即...
分类:
编程语言 时间:
2015-03-09 18:56:30
阅读次数:
158