首页 > 其他 > 详细

1102 Invert a Binary Tree (25 分)

时间:2021-08-09 23:24:46      阅读:28      评论:0      收藏:0      [点我收藏+]
#include<iostream>
#include<cstring>

using namespace std;

const int N = 20;

struct node{
    int l, r, p;
}tr[N];
int n;

int q[N], tt = -1, hh;

void trev(int u){
    if(u == -1) return;
    trev(tr[u].r);
    cout << u << ‘ ‘;
    trev(tr[u].l);
}

int main(){
    memset(tr, -1, sizeof tr);
    
    cin >> n;
    for(int i = 0; i < n; i ++){
        char a, b;
        cin >> a >> b;
        if(a != ‘-‘) tr[i].l = a - ‘0‘, tr[a - ‘0‘].p = i;
        if(b != ‘-‘) tr[i].r = b - ‘0‘, tr[b - ‘0‘].p = i;
    }
    
    int r = 0;
    for(int i = 0; i < n; i ++) 
        if(tr[i].p == -1){
            r = i;
            break;
        }
        
    q[++ tt] = r;
    while(hh <= tt){
        int a = q[hh ++];
        if(~tr[a].r) q[++ tt] = tr[a].r;
        if(~tr[a].l) q[++ tt] = tr[a].l;
    }
    
    for(int i = 0; i <= tt; i ++) cout << q[i] << ‘ ‘;
    cout << endl;
    
    trev(r);
    
    return 0;
}

1102 Invert a Binary Tree (25 分)

原文:https://www.cnblogs.com/tomori/p/15120087.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!