请分别用递归和非递归方法实现查找二叉树中的最大元素的算法。
第1题
二叉树
实验目的:
(1)熟悉二叉树的各种存储结构及适用范围。
(2)掌握建立二叉树的存储结构的方法。
(3)熟练掌握二叉树的先序、中序、后序遍历的递归算法和非递归算法。
(4)灵活运用递归的遍历算法实现二叉树的其他各种运算。
(5)掌握和理解本实验中出现的一些基本的C语言语句。
(6)体会算法在程序设计中的重要性。
实验内容:
(1)以二叉链表作存储结构,设计求二叉树高度的算法。
(2)以二叉链表作存储结构,编写递归的中序遍历算法。
(3)以二叉链表作存储结构,编写非递归的中序遍历算法。
(4)以二叉链表作存储结构,编写求二叉树中叶子结点的个数算法。
第2题
查找
实验目的:
(1)掌握顺序查找、二分查找的递归及非递归算法。
(2)掌握散列表上的各种操作。
(3)熟练掌握在二叉排序树上各种操作的实现方法。
(4)掌握和理解本实验中出现的一些基本的C语言语句。
(5)体会算法在程序设计中的重要性。
实验内容:
(1)给出顺序表上顺序查找元素的算法。
(2)给出非递归的二分查找算法。
(3)编写拉链法处理冲突的查找程序。
第4题
图
实验目的:
(1)掌握图的两种存储结构的实现方法。
(2)掌握遍历图的递归和非递归算法。
(3)掌握和理解本实验中出现的一些基本的C语言语句。
(4)体会算法在程序设计中的重要性。
实验内容:
(1)设计算法,构造无向图的邻接链表,并递归地实现基于邻接链表的图的深度优先搜索遍历。
(2)设计算法,构造无向图的邻接矩阵,并递归地实现基于邻接矩阵的图的深度优先搜索遍历。
第5题
二叉树以二叉链表存储,写出对二叉树进行先序遍历的非递归算法。
解题思路:二叉树的先序遍历非递归算法利用栈结构,从二又树的根结点开始,输出结点信息,同时将结点指针入栈,然后顺着左子树,依次将其左子树各个结点值输出,同时结点指针入栈,直到左子树为空;然后让栈顶指针出栈,接着处理右子树。
第7题
A.模块化程序设计方法主要是通过递归算法和递归程序来实现的
B.模块化程序设计方法主要是通过过程和函数的定义以及调用来实现的
C.模块化设计的思想就是将一个复杂的问题采取“分而治之”的策略
D.程序设计阶段大致分为程序的模块化设计和模块内的逻辑设计
第9题
将一个非负十进制整数转换成八进制数,使用非递归算法实现。
算法分析:十进制转换成八进制的过程是将十进制整数除8得余数,直到商是0为止,然后倒排余数。为了得到倒排的余数,可以利用栈来实现,每次运算后将余数压入栈中,直到商为0,将栈中数据输出即是。使用顺序栈,将顺序栈的定义及其基本操作的实现写在头文件“seqstack.h”中。
第10题
在下述的编译方法中,自上而下的分析方法有()。①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析⑥SLR(K)分析⑦LL(K)分析⑧LALR(K)分析
A③④⑦
B③④⑧
C①②⑧
D③④⑤⑥⑦
第11题