我想打印一个包含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;
}
我找到了一些相关答案there。但讨论是使用链接列表可能是(节点)我不想使用节点来获取树的元素。我从阵列中取出它们。
答案 0 :(得分:0)
您的代码难以理解,因为:
如果您遵循更好的做法来解决这个问题 - 从清楚地描述您的算法开始(对自己来说,如果没有其他人) - 您可能会做得对。