文章
2
粉丝
82
获赞
0
访问
1.2k
旧思路存在评论区大佬snake提出的问题:
1. 首先读取模板串(第一个输入的字符串),将其第一个字符作为关键字,根据关键字将字符串分为大于关键字的部分(mobanda)和小于关键字的部分(mobanxiao)。
2. 然后,对于每一个待比较的字符串,同样地,根据关键字将其分为大于关键字的部分(nowda)和小于关键字的部分(nowxiao)。接着,将这两个部分分别与模板串的对应部分进行比较。
3. 如果待比较的字符串与模板串在关键字、大于关键字的部分和小于关键字的部分都相同,则输出 "YES",否则输出 "NO"。
以下是老实建树通过比较先序和中序遍历序列确定
#include <iostream>
#include <string>
using namespace std;
typedef struct node {
char x;
node* lchild, * rchild;
}*Tree;
string ans = "";
void CreatTree(Tree& t, string s, int len) {
if (len == 0)return;
t = new node{ s[0],nullptr,nullptr };
int index = 1;
node* run = t;
while (index < len) {
if (s[index] > run->x) {
if (run->rchild == NULL) {
run->rchild = new node{ s[index],nullp...
登录后发布评论
思路有点问题,这个题的几种解法,要么建树比较,或者对字符串递归比较
你这个只分解了根的左右儿子,但是没有继续继续下去分解儿子的儿子
可以参考这个同学的代码:https://noobdream.com/post/85144/