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;
}
相关推荐
我是慎独21 分钟前
VulkanSceneGraph学习教程(十一)
c++·学习
imaol130 分钟前
文件编程--标准IO
linux·运维·算法
青 春 记 忆34 分钟前
LeetCode 121. 买卖股票的最佳时机|Python 解法详解
python·算法·leetcode
stolentime1 小时前
AT_agc066_a [AGC066A] Adjacent Difference题解
c++·算法·贪心算法·构造
程序猿编码1 小时前
不用PyTorch,我用C++手写了一个能认手写数字的神经网络
c++·pytorch·神经网络·大模型
不会代码的小猴1 小时前
4. 控件学习2
开发语言·c++·笔记·qt
渣波1 小时前
深度解析:LeetCode 51. N 皇后 —— 回溯算法的巅峰之作
算法
咪饭只吃一小碗1 小时前
# C++ STL 常用容器方法全面总结vector / map / set / unordered_map / unordered_set
算法
daad7771 小时前
802.11 前导码与 STF 深度解析(含检测算法与 5G 对比
人工智能·算法·5g·wifi·802.11·前导码
闻道且行之2 小时前
图片处理助手|C++ 手搓离线 AI 抠图工具,U2Net 原理到落地一次讲透
开发语言·c++·人工智能·神经网络·opencv·计算机视觉