关闭

二叉树层次遍历

标签: 二叉树遍历递归
91人阅读 评论(0) 收藏 举报
分类:

介绍

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:436次
    • 积分:61
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档