題目描述
二叉樹用數組存儲,將二叉樹的結點數據依次自上而下,自左至右存儲到數組中,一般二叉樹與完全二叉樹對比,比完全二叉樹缺少的結點在數組中用0來表示。
計算二叉樹每個結點的平衡因子,並按后序遍歷的順序輸出結點的平衡因子。
--程序要求--
若使用C++只能include一個頭文件iostream;若使用C語言只能include一個頭文件stdio
程序中若include多過一個頭文件,不看代碼,作0分處理
不允許使用第三方對象或函數實現本題的要求
輸入
測試次數t
每組測試數據一行,數組元素個數n,后跟n個字符,二叉樹的數組存儲。
輸出
對每組測試數據,按后序遍歷的順序輸出樹中結點的平衡因子(測試數據沒有空樹)
樣例輸入
2 6 ABC00D 24 ABCD0EF0000H00000000000I
樣例輸出
B 0 D 0 C 1 A -1 D 0 B 1 I 0 H 1 E 2 F 0 C 2 A -2
提示
#include<iostream> using namespace std; int countfactor(int n,int i,char* p) { if(i>=n||p[i]=='0') return 0; int l=countfactor(n,i*2+1,p); int r=countfactor(n,i*2+2,p); cout<<p[i]<<' '<<l-r<<endl; return max(l,r)+1; } void countfactor(int n,char *p) { countfactor(n,0,p); } int main() { int T; cin>>T; while(T--) { int n; cin>>n; char *p=new char[n]; for(int i=0;i<n;i++) cin>>p[i]; countfactor(n,p); delete []p; } return 0; }