本文利用C语言非递归实现了二叉树的先序、中序、后序遍历。其中先序和中序遍历给出了两种思路,最后还给出了验证算法的小例子。二叉树的遍历算法是数据结构的基础,应该反复加强学习。...
分类:
编程语言 时间:
2014-10-17 10:24:29
阅读次数:
186
1. 问题描述:先序非递归建立一颗以二叉链表为存储结构的二叉树。例如建立如下所示的一颗二叉树 A / \ B E / \ / C D F ...
分类:
其他好文 时间:
2014-10-15 22:49:51
阅读次数:
212
近期在学习数据结构上关于平衡二叉树的知识,看了严老师的思路,感觉用java写出递归的构建方式有点困难,由于当中的递归须要把引用传进去,所以感觉是要实现起来比較麻烦,所以就首先想到使用非递归的方式来实现构建平衡二叉树。 使用非递归的方式,思路也非常easy,就是为每个结点都要定义一个平衡因子的属性,....
分类:
编程语言 时间:
2014-10-15 13:56:30
阅读次数:
224
算法导论:10.4-3
给定一个 n 结点的二叉树,写出一个 O(n) 时间的非递归过程,将该树每个结点的关键字输出。可以使用一个栈作为辅助数据结构。...
分类:
其他好文 时间:
2014-10-14 22:40:39
阅读次数:
157
算法导论:10.2-7 给出一个 O(n) 时间的非递归过程,实现对一个含有 n 个元素的单链表的逆转。要求除存储链表本身所需的空间外,该过程只能使用固定大小的存储空间。
#ifndef _SINGLY_LINKED_LIST_H
#define _SINGLY_LINKED_LIST_H
/***************************************************...
分类:
其他好文 时间:
2014-10-13 09:31:11
阅读次数:
185
一、递归函数,通俗的说就是函数本身自己调用自己...如:n!=n(n-1)!你定义函数f(n)=nf(n-1)而f(n-1)又是这个定义的函数。。这就是递归二、为什么要用递归:递归的目的是简化程序设计,使程序易读三、递归的弊端:尽管非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是添加了系统...
分类:
编程语言 时间:
2014-10-12 23:26:58
阅读次数:
290
转至:http://blog.csdn.net/alex44667416/article/details/4723991package tree;import java.util.Stack;// 二叉树节点 class BTNode { private char key; privat...
分类:
编程语言 时间:
2014-10-12 19:32:48
阅读次数:
255
只会写递归的,应该学学非递归的。 也是O(lgn)。比如要计算$a^b$,把b写成二进制,假设$b=11_{(10)}=1011_{(2)}=2^3+2^1+2^0$;所以$a^{11}=a^{2^3+2^1+2^0}=a^{2^3}*a^{2^3}*a^{2^0}$。这样我也就可以把每一位的乘积项...
分类:
其他好文 时间:
2014-10-12 14:03:47
阅读次数:
127
一、基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。满二叉树:所有终端都在同一层次,且非终端结点的度数为2。在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。完全二叉树:除...
分类:
其他好文 时间:
2014-10-11 18:15:15
阅读次数:
247