欢迎访问binary的Blog   虚心使人进步,骄傲使人落后。

          W3CHINA Blog首页    管理页面    写新日志    退出



«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


登录

用户名称:
登陆密码:
密码保存:


联系我
email: binaryluo(at)gmail.com

我的分类

日志更新

最新评论

留言板

Blog信息

 
blog名称:二进制-虚心使人进步,骄傲使人落后。
日志总数:42
评论数量:370
留言数量:88
访问次数:640421
建立时间:2005年2月19日




[算法设计与分析][原创]层序遍历二叉树
原创空间,  软件技术

binaryluo 发表于 2005/12/26 2:05:00

要求:设计一个算法层序遍历二叉树(同一层从左到右访问)。我写了一个算法:用一个队列保存被访问的当前节点的左右孩子以实现层序遍历。Status HierarchyBiTree(BiTree T, Status (*Visit)(TElemType e)) {        LinkQueue *Q;     // 保存当前节点的左右孩子的队列                InitQueue(Q);       // 初始化队列        if (T == NULL) return ERROR; //树为空则返回        p = T;                  // 临时保存树根T到指针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); // 若存在右孩子,右孩子进队列        }        DestroyQueue(Q);                           // 释放队列空间        return OK;}算法分析:假设T有n个节点。因为本算法中基本操作是Visit(p->data),则时间复杂度为O(n);由于用一个队列保存当前孩子的节点,所以队列占用的额外空间为该二叉树的叶子节点数,最好情况是一棵只有左分支或只有右分支的单边树,此时占用空间最少,仅为1。最坏情况是该树是满二叉树,此时占用的空间最多为(n+1)/2。 


阅读全文(4753) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.223 second(s), page refreshed 144776860 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号