二叉树层次遍历

原创 2016年08月30日 10:46:42

介绍

顾名思义是按照层次列出二叉树的所有节点。先列出根节点,再列出层次为1的节点(每层从左往右列出),再列出层次为2的节点,依次类推,知道所有节点被列出

思路

二叉树用的比较多的遍历方式有,先序便利,中序便利,后序便利,层次遍历并不是很多,先序,中序,后序都能用递归简单的实现,层次遍历需要借助队列来实现

1.先把根节点root入队
2.root要出队的时候,root的左右孩子child1left,child1right入队
3.child1left要出队,child1left的左右孩子child2left,child2right入队
.
.
.
4.直到队列为空

code

void bst_levelSearch (BST_SearchTree tree) {
    if (tree==NULL) {
        return;
    }

    Queue queue=createQueue(1000);
    enQueue(tree->element, queue);
    while (queue->size!=0) {

        BST_SearchTree nodeToOut=(BST_SearchTree)front(queue);
        printf("%d",nodeToOut->element);
        deQueue(queue);
        if (nodeToOut->left) {
            enQueue(nodeToOut->element, nodeToOut->left);
        }
        if (nodeToOut->right) {
            enQueue(nodeToOut->element, nodeToOut->right);
        }
    }
}

code时间复杂度是O(N)

相关文章推荐

二叉树类实现,包含层次遍历

  • 2015年05月17日 13:12
  • 210KB
  • 下载

二叉树之层次遍历(js)

js实现二叉树层次遍历输入一棵二叉树,你的任务是从上到下,从左到右的顺序输出各个结点的值。每个结点都是按照从根节点到它移动序列给出(L表示左,R表示右)。在输入中,每个结点的左右括号之间没有空格,相邻...

二叉树的遍历详解(前序中序后序层次-递归和非递归)

二叉树二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不...
  • gatieme
  • gatieme
  • 2016年04月15日 17:04
  • 5607

面试经典(11)--二叉树层次遍历

题目描述:

根据中序和层次遍历序列,构造二叉树

代码如下,思路详见注释: #include #include #include using namespace std; typedef struct Bitree{ char data; s...

二叉树按层次遍历的递归用法

对于在学数据结构的大家,在编写二叉树的按层次遍历时往往会用非递归的方法,或许有人会问可不可以用递归来做呢? 对此,小编的答案是可以的。 相对于非递归,递归稍微要复杂些(这是由于二叉树中递归左子树递归右...

数据结构 — 6.顺序队列(循环)实现二叉树层次遍历

【问题描述】编写按层次顺序(同一层自左至右)遍历二叉树的算法 【输入形式】A B * C * * D * *   【输出形式】A B D C /* 1.顺序循环队列 2.二叉...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树层次遍历
举报原因:
原因补充:

(最多只允许输入30个字)