打印其元素存储在数组

时间:2018-03-13 22:15:15

标签: c++ arrays binary-tree

我想打印一个包含n个元素的完整二叉树,其中1< = n< = m& m是一个自然数,这些元素存储在一个数组中。 我的方法:

#include <iostream>
#include<math.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    int arr[n];
    for(int a=0;a<n;a++)cin>>arr[a];

    /*Printing the sorted tree*/
    int l=1,cnt=1;
    while(l<=n)
    {
        cnt++;
        l=l+pow(2,cnt);
    }
    int val=0,cn=1,loli;
    while(1)
    {
        for(int p=cnt;p>=1;p--) cout<<"   ";
        for(int ll=1,loli=1;ll<=pow(2,val);ll++){
                if(cn==n)return 0;
                if(loli!=2){
                    cout<<arr[cn++]<<"    ";
                    loli++;
                }
                else{
                    cout<<arr[cn++];
                    loli=1;
                }
        }
        val++;
        cnt=cnt-2;
        if(cnt==0)cnt=1;
        cout<<endl;
    }
    return 0;
}

Output of this code done by me

My desired output

我找到了一些相关答案there。但讨论是使用链接列表可能是(节点)我不想使用节点来获取树的元素。我从阵列中取出它们。

1 个答案:

答案 0 :(得分:0)

您的代码难以理解,因为:

  1. 目前尚不清楚你是如何解决这个问题的
  2. 你不会闯入职能部门(你应该这样做)
  3. 您对变量使用神秘的名称
  4. 你完全依赖于一个完全人为的参数,m。我们为什么要关心m?
  5. 如果您遵循更好的做法来解决这个问题 - 从清楚地描述您的算法开始(对自己来说,如果没有其他人) - 您可能会做得对。