文章

11

粉丝

152

获赞

9

访问

36.0k

头像
两种方法进行树查找
P1386 北京邮电大学
发布于2023年4月10日 01:18
阅读数 1.8k

方法一:利用完全二叉树的性质,除最后一层外都是满二叉树,且最后一层的叶子结点都集中在树的左侧

#include <bits/stdc++.h>
using namespace std;
int n, d;//n代表节点个数,d代表深度 
void input(vector<int> &arr){
    for(int i = 0; i < n; i++){
        cin >> arr[i];
    }
}
int main(){
    while(cin >> n){
        vector<int> arr(n);
        input(arr);
        cin >> d;
        int left = (int)pow(2, d - 1) - 1, right = (int)pow(2, d) - 2;
        if(left < 0 || right < 0 || left >= n || right >= n){
            printf("EMPTY\n");
            continue;
        }
        for(int i = left; i <= right; i++){
            printf("%d", arr[i]);
            if(i != right){
                printf(" ");
            }
        }
        printf("\n");    
    }
    return 0;
} 

 

方法二:建立完全二叉树进行层次遍历

#include <bits/stdc++.h>
using namespace std;

int d;//代表深度
struct node{
  int val;
  node* left, *right;
};
typedef pair<node*, int> tr...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发