欢迎光临散文网 会员登陆 & 注册

完全二叉树的遍历https://pintia.cn/problem-sets/1629459462098612224/exam/

2023-03-24 19:08 作者:lhknz  | 我要投稿

大家可以翻看我自己之前录制的视频,递归问题,可以认为是一个递归二叉树的问题,但是到底这个递归二叉树是什么样子的,这个题目的代码给我们了一个非常清晰的答案:

#include <iostream>

using namespace std;

int  n;
const int N =  40;
int q[N];

int t[N];

int cnt;

void dfs(int u){
    
    
if(u > n) return;
    
    
dfs(u * 2);
    
    
dfs(u * 2 + 1);
    
    
t[u] = q[cnt ++];
    
}
int main(){
    
    
cin >> n;
    
    
for(int i = 0;i < n;i ++) cin >> q[i];
    
    
dfs(1);
    
    
for(int i = 1;i <= n;i ++) cout << t[i] << " ";
    
    
    
return 0;
}

在递归函数当中,上来的dfs(u * 2) 和 dfs(u * 2 + 1),可能让很多人懵,但是其实是没有必要懵的,这里的过程就是构建了一个递归二叉树,不用想复杂 就是构造了一个二叉树,然后填上相应的数字,就没有其他的问题了,当然这里要注意这里是完全二叉树的遍历,一定是完全二叉树

完全二叉树的遍历https://pintia.cn/problem-sets/1629459462098612224/exam/的评论 (共 条)

分享到微博请遵守国家法律