非递归算法,以孩子兄弟为存储结构的计算树的深度 该怎么理解
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/30 01:40:18
非递归算法,以孩子兄弟为存储结构的计算树的深度 该怎么理解
首先树的儿子会有很多的,为了解决儿子很多且不定的情况:
也采用二叉树的存储结构类型,但做了一点改进:
左节点vp表示大儿子,右节点hp表示兄弟,这样“树”就变成“二叉树”
的结构了.右节点串在一起,表示同一层.
另要搞懂队列,是数组做的循环队列qu[ ],头front ,尾rear;
又增加一个数组 level [ ]是队列qu[ ]的辅助单元,存放 队列节点的层号,两数组
下标是一一对应的;
这两个概念是基础,一定要懂.不懂是看不下去的.
算法的核心:
1.用队列的方法遍历所有节点,从队列中取出一个节点指针进行访问,同时
取出层号,并把这个节点的所有子节点及它的层号放入队列,以便以后取出访问;
为了启动遍历,初始队列须压入根节点;
2.遍历时知道这个节点层号(m),就可比较,最大值(max)就是树的深度.
3.遍历访问一个节点时,左节点vp就是大儿子,属下一层,层号是m+!,
右节点开始就是同层兄弟(第二个while就是),须压入队列,层号仍是m+1;
4.反复循环取出队列中节点进行访问(直到为空),并把它的把有儿子压入队列
以便再次访问;
这个经典算法,不复杂,有不明白的再追问
也采用二叉树的存储结构类型,但做了一点改进:
左节点vp表示大儿子,右节点hp表示兄弟,这样“树”就变成“二叉树”
的结构了.右节点串在一起,表示同一层.
另要搞懂队列,是数组做的循环队列qu[ ],头front ,尾rear;
又增加一个数组 level [ ]是队列qu[ ]的辅助单元,存放 队列节点的层号,两数组
下标是一一对应的;
这两个概念是基础,一定要懂.不懂是看不下去的.
算法的核心:
1.用队列的方法遍历所有节点,从队列中取出一个节点指针进行访问,同时
取出层号,并把这个节点的所有子节点及它的层号放入队列,以便以后取出访问;
为了启动遍历,初始队列须压入根节点;
2.遍历时知道这个节点层号(m),就可比较,最大值(max)就是树的深度.
3.遍历访问一个节点时,左节点vp就是大儿子,属下一层,层号是m+!,
右节点开始就是同层兄弟(第二个while就是),须压入队列,层号仍是m+1;
4.反复循环取出队列中节点进行访问(直到为空),并把它的把有儿子压入队列
以便再次访问;
这个经典算法,不复杂,有不明白的再追问
非递归算法,以孩子兄弟为存储结构的计算树的深度 该怎么理解
一棵采用孩子兄弟表示法存储的树,设计算法,按层次依次输出该树的所有结点
创建一个无向图,元素为整型,以邻接矩阵为存储结构,输出该图的深度化先搜索序列,求连通分量的个数
设计一个非递归算法判断以邻接方式存储的向图中是否存在由顶点Vi到Vj的路径.急.有哪位高手帮忙.
以单链表为存储结构,写一实现线性表就地逆置的算法(用C++写)
库存深度该怎么理解?库存深度的含义是什么?
已知长度为n的线性表A采用顺序存储结构,请写一算法,找出该线性表中值最小的数据元素.
设树采用孩子兄弟表示法存放,用类C语言设计算法计算树的高度.
已知长度为n的线性表A采用顺序存储结构,请写出一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中
数据结构试验(用C语言)建立一棵二叉树,并用递归或者非递归的算法分别用先序.中序和后序遍历、谢谢
求水仙花数的算法是 使用循环结构实现计算N!的算法是 A递归 B迭代 C排序 D查找
二叉数的前序、中序、后续三种方式的递归与非递归的算法.