前中后序遍历有技巧吗 层序遍历二叉树与经典递归遍历的性能差距多大?
浏览量:2964
时间:2021-03-11 21:20:56
作者:admin
层序遍历二叉树与经典递归遍历的性能差距多大?
递归遍历二叉树程序很短,易懂。在性能方面,递归速度快,占用内存少。但递归程序包含深度优先和广度优先的遍历方法,比较复杂,容易出错。
现在CPU速度非常快,堆栈空间非常大。性能差异可以忽略不计。
或递归遍历二叉树程序可读性更好。
二叉树的层次遍历?
设计一个遍历二叉树的算法(从左到右访问同一层)。思路:用队列保存当前节点的左右子节点,实现序列遍历。
Void hierarchy BiTree(BiTree root){
linkqueue*q//保存当前节点左右子节点的队列
initqueue(q)//初始化队列
if(root==null)return//树为空时返回
binode*P=root//将树根临时保存到指针P
visit(P->data)//访问根节点
if(P->lchild)enqueue(Q,P->lchild)//如果有左子级,左子级进入队列
if(P->rchild)enqueue(Q,P->rchild)//如果有右子级,右子级进入队列
while(!Queueempty(q))//如果队列不为空,则序列遍历{dequeue(q,P)//出队列
visit(P->data)//访问当前节点
if(P->lchild)enqueue(q,P->lchild)//如果有左子级,则左子级进入队列
if(P->rchild)enqueue(q,P->rchild)//如果有左子级右子,右子进入队列
}
destroy queue(q)//释放队列空间
return
这很详细!你能理解的!加油!
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。