二叉树层次遍历

来源:互联网 发布:儿童编程教材 编辑:程序博客网 时间:2024/06/05 05:55

      • 介绍
      • 思路
      • code

介绍

顾名思义是按照层次列出二叉树的所有节点。先列出根节点,再列出层次为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)

0 0
原创粉丝点击