1040. 二叉树层次遍历

Posted bernieloveslife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1040. 二叉树层次遍历相关的知识,希望对你有一定的参考价值。

Description

给出一棵二叉树,求它的层次遍历结果。

[二叉树的遍历问题是一种精神,务必领会]

Input Format

第一行,N<1000000,表示二叉树节点数。

默认序号为0的节点为树根。接下来共N-1行,依次表示序号为1,...,N-1的节点的父亲节点序号。

如果一个节点有两个孩子节点,左孩子节点序号总是小于右孩子节点序号。

Output Format

仅一行,二叉树的层次遍历结果。节点序号间用空格隔开。

Hint

Sample Input

6
0
1
1
0
4

Sample Output

0 1 4 2 3 5



#include <iostream>
#include <queue>
using namespace std;


int main()
{
    int n;
    cin>>n;
    int tree[2*n]={0};
    for(int i=1;i<n;i++){
        int t=0;
        cin>>t;
        if(tree[2*t]==0)tree[2*t]=i;
        else tree[2*t+1]=i;
    }
    queue<int> q;
    q.push(0);
    while(!q.empty()){
        int now=q.front();
        q.pop();
        cout<<now<<‘ ‘;
        if(tree[2*now])q.push(tree[2*now]);
        if(tree[2*now+1])q.push(tree[2*now+1]);
    }
    return 0;
}


以上是关于1040. 二叉树层次遍历的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的前序中序后序层次遍历的原理及C++代码实现

二叉树层次遍历(包含C语言实现代码)

二叉树的层次遍历

P1040 加分二叉树

二叉树遍历(前序中序后序层次深度优先广度优先遍历)

二叉树的层次遍历