主站
DreamJudge
院校信息
专业题库
模拟考试
机试真题
专业课程
答疑区
兑换中心
登录
注册
上岸
以下题解仅供学习参考使用。
抄袭、复制题解,以达到刷AC率/AC数量或其他目的的行为,在N诺是严格禁止的。
N诺非常重视学术诚信。此类行为将会导致您成为作弊者。具体细则请查看N诺社区规则。
Howie_Waves
2024年8月31日 17:21
判断二叉树是否对称 题解:
P1551
回复 0
|
赞 1
|
浏览 927
将层序遍历的字符串反序列化,构造成二叉链表形式的二叉树 再通过isSymmetric和isMirror两个函数判断是否对称 (我的这两个函数感觉相对来说要更容易理解一下) P.S 代码中的l是list<int>链表,用来存储层序遍历的字符串输入,方便获取和删除头部元素(l.front()和l.pop_front()) #include<bits/stdc++.h> using namespace std; struct node { char val; node* left; node* right; ...
我与代码的故事
2024年8月13日 12:31
判断二叉树是否对称 (指针建树)题解:
P1551
回复 0
|
赞 1
|
浏览 432
#include<bits/stdc++.h> using namespace std; string data; // 定义二叉树节点 typedef struct Tree { char val; Tree *left, *right; Tree(char x) : val(x), left(nullptr), right(nullptr) {} }Tree; // 层次遍历建树 Tree* build(const string& data) { if...
今夕何夕12211
2024年3月27日 10:44
判断二叉树是否对称 题解:
P1551
回复 1
|
赞 0
|
浏览 612
求助 显示超时 准确率只有77% #include <stdio.h> #include <string.h> #include <math.h> int check(char a[],int x,int y) { int i=x; int j=y; while(i<j) { if(a[i]==a[j]) &nbs...
孙某人
2024年2月29日 12:00
判断二叉树是否对称 题解:新手方法 易于理解
P1551
回复 1
|
赞 2
|
浏览 889
#include <iostream> #include<string.h> #include <math.h> using namespace std; int main(){ char a[1005]; for(int i=0;i<1005;i++) a[i]=0; gets(a); int len=strlen(a); int high=0; for(int i=1;;i++){ if((len+1)<=pow(2.0,i)) { high=i; break; ...
小王桐学
2024年2月24日 16:26
判断二叉树是否对称 题解:C
P1551
回复 0
|
赞 0
|
浏览 796
第一层(2^0)1个,第二层(2^1)2个,第三层(2^2)4个。。。。。。。。 #include <stdio.h> #include <string.h> #include <math.h> int JudgeSymmetry(char *t,int n) { int i = 0,j,k,m,l = 0; while(i < n) { j = pow(2,l); k = i; m = k+j-1; while(k <= m && m < n) { ...
xx_about123456
2022年8月7日 10:32
只区分空节点与非空结点 解决对称问题
P1551
回复 0
|
赞 2
|
浏览 5.2k
思路: 将非空结点的值修改成相同的值(如t),这样树的结点要么为#,要么为t; 逐层判断(1----2----4-----8)每层的字符数按照这样的规律提取子串,子串倒转之后,内容不变,即对称; 带注释代码 #include <bits/stdc++.h> using namespace std; int main() { string str; cin>>str; int flag=0; int len = str.length(); for(int i=0;...
zjx140
2022年1月6日 19:29
层级遍历方式,每层进行对称性判断
P1551
回复 0
|
赞 0
|
浏览 7.2k
#include<iostream> #include<queue> using namespace std; int main(){ string s; queue<int> que; //编号队列 cin >> s; bool result = true; if(s[0]!= '#') que.push(0); while(!que.empty()){ int size = que.size(); string temp; // 接住每层构成的字符串 for(int i = 0;i &...
鱼翔浅底
2021年1月29日 12:29
判断二叉树是否对称
P1551
回复 1
|
赞 1
|
浏览 10.6k
数组存储,一层层往下判断 #include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> //判断 int Judge(char *s,int start,int end,int len) { if (end>=len) { return 1; } for (int i = start,j=end; i<=j; i++,j--) { ...
山楂
2021年2月24日 21:18
把二叉树当成满二叉树处理,每层进行对称判断,不需要构造二叉树
P1551
回复 0
|
赞 1
|
浏览 9.3k
#include<iostream> #include<queue> #include<vector> #include<string> using namespace std; string s; //k , l 为该层起始下标 bool symmetry(int k, int l) { while (k <= l) { if ( (s[k] == '#' && s[l] != '#') ||\ (s[k...
James
2021年2月1日 14:43
先重建树 然后两个方向递归
P1551
回复 0
|
赞 0
|
浏览 9.0k
#include<iostream> #include<queue> #include<string> #include<string.h> using namespace std; typedef struct node{ char data; struct node*lchild; struct node*rchild; }BiNode,*BiTree; queue<BiTree> q; ...
1
2
题目
判断二叉树是否对称
题解数量
14
发布题解
热门题解
1
只区分空节点与非空结点 解决对称问题
2
判断二叉树是否对称 题解:新手方法 易于理解
3
把二叉树当成满二叉树处理,每层进行对称判断,不需要构造二叉树
4
判断二叉树是否对称 (指针建树)题解:
5
判断二叉树是否对称 题解:
6
判断二叉树是否对称
7
只区分叶子和非叶子,直接reverse进行比较每一层
8
111
9
记录
10
左右分别往下比较,递归比较