二叉树层次遍历

原创 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)

如何实现二叉树层次遍历

完整 #include using namespace std; typedef struct biTreeNode { char data; struct biTreeNode *LChild...
  • u014309268
  • u014309268
  • 2014年09月26日 22:47
  • 3766

二叉树利用队列实现层次遍历

这里先提一句为什么之前树的创建可以由前序遍历的方法搞定,原因是前序遍历的时候把所有的空节点都包含在内了,如果仅仅只有非空节点的前序遍历输入,是无法得到单一二叉树的,例如给出了一个前序遍历顺序AB 那么...
  • lafengxiaoyu
  • lafengxiaoyu
  • 2016年11月20日 13:26
  • 5389

二叉树(前中后序递归非递归遍历,层次遍历,C++实现)

/*////////////////////////////////////////////////////////////////////////////// // 名 称 (Unit N...
  • wangzirui0001
  • wangzirui0001
  • 2011年10月09日 00:35
  • 3230

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

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

LintCode:二叉树的层次遍历 II

LintCode:二叉树的层次遍历 II""" Definition of TreeNode: class TreeNode: def __init__(self, val): ...
  • u012225151
  • u012225151
  • 2016年05月13日 13:19
  • 709

按层次生成、遍历二叉树

对于二叉树一般是按深度生成和遍历,比如使用递归方法进行先序遍历、中序遍历、后序遍历。这次我们按层次生成和遍历二叉树。这种遍历方式关键在于需要使用一个队列保存“已处理该节点,但还没处理它的子节点”这样的...
  • u013632190
  • u013632190
  • 2016年08月08日 08:50
  • 1344

二叉树(续) 三种层次遍历算法

前言    关于二叉树我们在前面已经细致的讨论,具体的二叉树实现请参考前面的链接,这篇博客重点放在二叉树的三种遍历算法上面。 解法一:    对于二叉树的层次遍历,我们很容易想到,如果能...
  • zilingxiyue
  • zilingxiyue
  • 2015年05月16日 14:37
  • 2014

二叉树的层次遍历----java实现

根据层次遍历的顺序,每一层都是从左到右的遍历输出,借助于一个队列。 先将根节点入队,当前节点是队头节点,将其出队并访问,如果当前节点的左节点不为空将左节点入队,如果当前节点的右节点不为空将其入队。所...
  • snow_7
  • snow_7
  • 2016年07月03日 16:44
  • 10276

python二叉树的层次遍历

class Node(object): def __init__(self, data, left=None, right=None): self.data = data ...
  • jeason29
  • jeason29
  • 2016年06月04日 17:30
  • 1724

java根据层次遍历建立二叉树

节点类: package Tree; public class BTNode { private E data; private BTNode left, right; public B...
  • feng11116
  • feng11116
  • 2016年01月08日 11:43
  • 911
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树层次遍历
举报原因:
原因补充:

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