1.问题描述:
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
7
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11
2.算法解决:
对于层序遍历,其实说白了就是BST的广度优先遍历,我们采用的策略是建立一个队列,不断向叶子结点进行扩展,当队列为空的时候,我们显示的结果是BST已经被广度优先遍历结束,队列中存放的内容是指向该节点的指针
3.代码实现:
void rank_visit(point* root) //BST的根节点root
{
point* queue[N];
int head=1;
int tail=1;
queue[++tail-1]=root;
while(head!=tail)
{
if(queue[head]->left!=NULL) queue[tail++]=queue[head]->left;
if(queue[head]->right!=NULL) queue[tail++]=queue[head]->right;
head++;
}
for(int i=1;i<tail;i++) cout<<queue[i]->data<<' ';
cout<<endl;
}