本文针对数据结构基础系列(6):树和二叉树第7, 11-15课时7 二叉树与树、森林之间的转换
11 二叉树遍历非递归算法
12 层次遍历算法
13 二叉树的构造
14 线索二叉树
15 哈夫曼树【项目1 - 二叉树算法验证】 运行并重复测试教学内容中涉及的算法。改变测试数据进行重复测试的意义在于,可以从更多角度体会算法,以达到逐渐掌握算法的程度。使用你的测试数据,并展示测试结果,观察运...
分类:
其他好文 时间:
2015-11-01 16:43:53
阅读次数:
206
题目:二叉树的中序遍历给出一棵二叉树,返回其中序遍历样例给出二叉树{1,#,2,3}, 1 \ 2 / 3返回[1,3,2].挑战你能使用非递归算法来实现么?解题:程序直接来源Java程序:/** * Definition of TreeNode: * public cl...
分类:
其他好文 时间:
2015-10-10 12:12:13
阅读次数:
252
算法的思想: 采用二叉树的后序遍历非递归算法。由于后序遍历非递归算法使用一个栈实现,每次都会在一条路径上走到最底层才向上访问,再向右访问。因此,记录下栈在遍历中的最大值,即为二叉树的最大深度。#include #include using namespace std;struct BinTree{....
分类:
编程语言 时间:
2015-10-08 00:37:40
阅读次数:
221
http://blog.csdn.net/pipisorry/article/details/37353037c实现:1.先序遍历非递归算法#define maxsize 100typedef struct { Bitree Elem[maxsize]; int top;} SqStack;vo.....
分类:
编程语言 时间:
2015-09-14 21:08:09
阅读次数:
139
栈模拟非递归算法递归算法的本质是利用函数的调用栈进行,实际上我们可以自行使用栈来进行模拟,这样的算法空间复杂度为O(h),h为二叉树的高度。前序遍历首先把根节点入栈,然后在每次循环中执行以下操作:此时栈顶元素即为当前的根节点,弹出并打印当前的根节点。把当前根节点的右儿子和左儿子分别入栈(注意是右儿子...
分类:
编程语言 时间:
2015-08-30 11:07:19
阅读次数:
220
首先非常感谢‘hicjiajia’的博文:二叉树后序遍历(非递归)这篇随笔开启我的博客进程,成为万千程序员中的一员,坚持走到更远!折磨了我一下午的后序遍历中午得到解决,关键在于标记右子树是否被访问过,考虑过修改二叉树结点的数据结构,增加一个visit域,或者建一个栈存储已访问的结点。都比较麻烦没有调...
分类:
编程语言 时间:
2015-08-11 20:59:51
阅读次数:
147
【问题描述】
“背包题目”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn,希望从N件物品中选择若干物品,所选物品的重量之和恰能放进该背包,即所选物品的重量之和即是S。递归和非递归解法都能,试非递归算法求得“背包题目”的一组解
【算法分析】
1.此程序是得到问题的所有解;
2.本题只对背包有重量约束;
3...
分类:
其他好文 时间:
2015-08-02 16:51:00
阅读次数:
115
二叉树定义#include#include#define STACK_INIT_SIZE 30#define STACKINCREMENT 10#define OK 1#define ERROR -1typedef char TElemType;typedef struct BiTNode{ ...
分类:
编程语言 时间:
2015-08-01 01:01:35
阅读次数:
149
找到相同结点后,判断子树是否相同,判断子树是否相同时,采用了非递归算法(深度优先)
分类:
其他好文 时间:
2015-07-31 01:14:32
阅读次数:
164
这几天在复习关于树的各种算法,做了一些题,也搜索了网上各种算法,现在来总结一下树的各种常见算法。本文涵盖:二叉树先中后序遍历(递归&非递归)算法层次遍历(正序&逆序&锯齿形)非递归算法二叉树深度算法结点总数算法1.二叉树先序非递归遍历//先序非递归遍历 public ArrayList pre...
分类:
编程语言 时间:
2015-07-23 23:16:59
阅读次数:
253