6-6 F. DS二叉树——二叉树之数组存储

题目描述

二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示。

右边的是一颗普通的二叉树,当它与左边的完全二叉树对比,发现它比完全二叉树少了第5号结点,所以在数组中用0表示,同样它还少了完全二叉树中的第10、11号结点,所以在数组中也用0表示。

结点存储的数据均为非负整数

输入

第一行输入一个整数t,表示有t个二叉树

第二行起,每行输入一个数组,先输入数组长度,再输入数组内数据,每个数据之间用空格隔开,输入的数据都是非负整数

连续输入t行

输入样例:

3

3 1 2 3

5 1 2 3 0 4

13 1 2 3 4 0 5 6 7 8 0 0 9 10

输出

每行输出一个示例的先序遍历结果,每个结点之间用空格隔开

输出样例:

1 2 3

1 2 4 3

1 2 4 7 8 3 5 9 10 6

代码

cpp 复制代码
#include <iostream>
using namespace std;

class Tree{
public:
    int len;
    int *arr;
    Tree(){
        cin >> len;
        arr = new int[len];
        for(int i = 0; i < len; i++){
            cin >> arr[i];
        }
    }

    void DLR(int i){
        if(arr[i] != 0 && i < len){
            cout << arr[i] << " ";
            DLR(i*2+1);
            DLR(i*2+2);
        }
    }
};

int main()
{
    int t;
    cin >> t;
    while(t--){
        Tree tree;
        tree.DLR(0);
        cout << endl;
    }
    return 0;
}
相关推荐
神仙别闹2 小时前
基于 C++ 实现两个有序链表序列的交集
java·c++·链表
政企项目老覃4 小时前
大模型幻觉治理与自动评测:金融风控场景的落地实践
人工智能·算法·机器学习
淡海水4 小时前
08-03-不可变-ImmutableDictionary-TKey-TValue-与ImmutableHashSet-T-持久化哈希树
数据结构·算法·c#·哈希算法·dictionary·immutable
hansang_IR4 小时前
【题解】[APIO2023] 赛博乐园 / cyberland
c++·算法·图论
洛阳纸贵5 小时前
MATLAB-matlab基础知识
学习·算法·matlab
落羽的落羽5 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
刚入门的大一新生5 小时前
Linux-进程控制
linux·运维·服务器·c++
Nil2085 小时前
leetcode 17电话号码的字母组合
算法·leetcode·职场和发展
刃神太酷啦5 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap