对称二叉树,求助大佬
  • 板块学术版
  • 楼主liuzimingc
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/8/23 21:41
  • 上次更新2023/11/4 09:17:06
查看原帖
对称二叉树,求助大佬
421781
liuzimingc楼主2021/8/23 21:41

RT。

如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.

例:如下图中的二叉树T1是对称的,T2是不对称的。

二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,反之输出“No”。

我的代码:

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

int n;
string s;

void dfs(int x) {
    if (x > n) return;
    bool res = s[x << 1] == '#' && s[x << 1 | 1] == '#' || s[x << 1] != '#' && s[x << 1 | 1] != '#';
    if (!res) {puts("No"); exit(0);}
    else {dfs(x << 1); dfs(x << 1 | 1);}
}
int main() {
    #ifndef ONLINE_JUDGE
        freopen("1.in", "r", stdin);
        freopen("1.out", "w", stdout);
    #endif
    cin >> s;
    n = s.length();
    s = " " + s;
    dfs(1);
    puts("Yes");
    return 0;
}

87pts87\text{pts},求助大佬……

2021/8/23 21:41
加载中...