DS查找—二叉树平衡因子

2023-07-30 13:32:11 浏览数 (1)

题目描述

二叉树用数组存储,将二叉树的结点数据依次自上而下,自左至右存储到数组中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点在数组中用0来表示。

计算二叉树每个结点的平衡因子,并按后序遍历的顺序输出结点的平衡因子。

--程序要求--

若使用C 只能include一个头文件iostream;若使用C语言只能include一个头文件stdio

程序中若include多过一个头文件,不看代码,作0分处理

不允许使用第三方对象或函数实现本题的要求

输入

测试次数t

每组测试数据一行,数组元素个数n,后跟n个字符,二叉树的数组存储。

输出

对每组测试数据,按后序遍历的顺序输出树中结点的平衡因子(测试数据没有空树)

输入样例1 

2 6 ABC00D 24 ABCD0EF0000H00000000000I

输出样例1

B 0 D 0 C 1 A -1 D 0 B 1 I 0 H 1 E 2 F 0 C 2 A -2

AC代码

代码语言:javascript复制
#include <iostream>
using namespace std;
class BT{
    int size,balance[256],depth[256]={0};
    char data[256];
public:
    BT(){
        cin>>size>>data;
    }
    void Postorder(int i){
        if(i>=size||data[i]=='0')
            return;
        Postorder(2*i 1);
        Postorder(2*i 2);
        depth[i]= max(depth[2*i 2],depth[2*i 1]) 1;
        cout<<data[i]<<' '<<depth[2*i 1]-depth[2*i 2]<<endl;
    }
};
int main() {
    int t;
    cin>>t;
    while(t--){
        BT test;
        test.Postorder(0);
    }
    return 0;
}

0 人点赞