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;
}
相关推荐
佑白雪乐8 分钟前
<ACM进度212题>[2026-3-1,2026-3-26]
算法·leetcode
穿条秋裤到处跑11 分钟前
每日一道leetcode(2026.03.26):等和矩阵分割 II
算法·leetcode·矩阵
平凡灵感码头16 分钟前
C语言 printf 数据打印格式速查表
c语言·开发语言·算法
哔哔龙21 分钟前
Android OpenCV 实战:图片轮廓提取与重叠轮廓合并处理
android·算法
hz_zhangrl24 分钟前
CCF-GESP 等级考试 2026年3月认证C++三级真题解析
c++·算法·程序设计·gesp·gesp2026年3月·gesp c++三级
x_xbx28 分钟前
LeetCode:1. 两数之和
数据结构·算法·leetcode
x_xbx30 分钟前
LeetCode:49. 字母异位词分组
算法·leetcode·职场和发展
玲娜贝儿--努力学习买大鸡腿版1 小时前
hot 100 刷题记录(1)
数据结构·python·算法
123过去1 小时前
pixiewps使用教程
linux·网络·测试工具·算法·哈希算法
kyle~1 小时前
C++----函数指针与函数指针类型 返回值类型 (*类型名)(参数列表)
开发语言·c++