二叉树相关代码

小球

#include <cstdio>
#include <cstring>

const int MAXN = 25; 

int d, i;
int s[1 << MAXN];

int main() {
    memset(s, 0, sizeof(s));
    scanf("%d %d", &d, &i);
    int k, n = (1 << d) - 1;
    for(int j = 1;j <= i;j ++) {
        k = 1;
        while(1) {
            s[k] = !s[k];
            k = s[k] ? k * 2 : k * 2 + 1;
            if(k > n) break;
        }
    }
    printf("%d", k / 2);
    return 0;
} 

找树根和孩子

#include <cstdio>
#include <iostream>
using namespace std;

int n, m, tree[105] = {0};
int x, y, root, maxroot, sum = 0, j, Max = 0;

int main() {
    scanf("%d %d", &n, &m);
    for(int i = 1;i <= m;i ++) {
        scanf("%d %d", &x, &y);
        tree[y] = x;
    } 
    for(int i = 1;i <= n;i ++) {
        if(tree[i] == 0) {
            root = i;
            break;
        }
    }
    for(int i = 1;i <= n;i ++) {
        sum = 0;
        for(int j = 1;j <= n;j ++) {
            if(tree[j] == i) sum ++;
        }
        if(sum > Max) {
            Max = sum;
            maxroot = i;
        }
    }
    printf("%d\n%d\n", root, maxroot);
    for(int i = 1;i <= n;i ++) 
        if(tree[i] == maxroot) printf("%d ",i);
    return 0;
}

单词查找树

#include <cstdio>
#include <iostream> 
#include <cstring>
using namespace std;

int n, t, k;
string a[8005];
string s;

int main() {
    while(cin >> a[++ n]);
    n --;
    for(int i = 1;i < n;i ++) {
        for(int j = i + 1;j <= n;j ++) {
            if(a[j] > a[i]) {
                s = a[i];
                a[i] = a[j];
                a[j] = s;
            }
        }
    }
    t = a[1].length();
    for(int i = 2;i <= n;i ++) {
        int j = 0;
        while(a[i][j] == a[i - 1][j] && j < a[i - 1].length()) j ++;
        t += a[i].length() - j;
    }
    printf("%d", t + 1);
    return 0;
} 

医院设置

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n, l, r;
    int a[105][105], b[105];
    cin >> n;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) a[i][j] = 999999999;

    for (int i = 1; i <= n; i++) {
        a[i][i] = 0;
        cin >> b[i] >> l >> r;
        if (l > 0)
            a[i][l] = a[l][i] = 1;
        if (r > 0)
            a[i][r] = a[r][i] = 1;
    }

    for (int k = 1; k <= n; k++)
        for (int i = 1; i <= n; i++)
            if (i != k)
                for (int j = 1; j <= n; j++)
                    if (j != i && j != k && a[i][k] + a[k][j] < a[i][j])
                        a[i][j] = a[i][k] + a[k][j];
    int minn = 999999999;
    for (int i = 1; i <= n; i++) {
        int sum = 0;
        for (int j = 1; j <= n; j++) sum += a[i][j] * b[j];
        if (sum < minn)
            minn = sum;
    }
    cout << minn << endl;
    return 0;
}

原文链接: https://www.cnblogs.com/Scarecrow41/p/13504669.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    二叉树相关代码

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/357622

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午11:51
下一篇 2023年3月2日 上午11:52

相关推荐