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