如下為什么是錯的
#include <iostream>
using namespace std;
struct BiNode
{
char data;
BiNode* lchild, * rchild;
};
class BiTree
{
public:
BiTree(char a[], char b[], int k)
{
for (int i = 0;i < k;i++)
pre[i] = a[i];
for (int i = 0;i < k;i++)
pin[i] = b[i];
root=Create(root,0,0,k);
}
~BiTree() { Release(root); }
void PreOrder() { PreOrder(root); }
void InOrder() { InOrder(root); }
void PostOrder() { PostOrder(root); }
int find(char d, char e[], int f, int k);
private:
char pre[100], pin[100];
BiNode* root;
BiNode* Create(BiNode* root, int i1, int i2, int k);
void Release(BiNode* bt);
void PreOrder(BiNode* root);
void InOrder(BiNode* bt);
void PostOrder(BiNode* root);
};
BiNode* BiTree::Create(BiNode* root,int i1,int i2, int k)
{
int m;
int rightlen, leftlen;
if (k <= 0)
root = NULL;
else
{
root = new BiNode;
root->data = pre[i1];
m = find(pre[i1], pin, i2,k);
leftlen = m - i2;
rightlen = k - (leftlen + 1);
root->lchild=Create(root->lchild, i1 + 1, i2, leftlen);
root->rchild=Create(root->rchild, i1 + leftlen + 1, m + 1, rightlen);
}
return root;
}
void BiTree::Release(BiNode* bt)
{
if (bt != NULL)
{
Release(bt->lchild);
Release(bt->rchild);
delete bt;
}
}
int BiTree::find(char d,char e[], int f,int k) {
for (int i = f; i<k; i++) {
if ( e[i]==d) return i;
}
}
void BiTree::PostOrder(BiNode* root)
{
if (root == NULL)
{
return;
}
else
{
PostOrder(root->lchild);
PostOrder(root->rchild);
cout << root->data;
}
}
int main()
{
string a, b;
int z;
char ai[100], bi[100];
cin >> a >> b;
int lena = a.size();
int lenb = b.size();
for (int i = 0; i < lena; i++)
{
ai[i] = a[i];
}
for (int i = 0; i < lenb; i++)
{
bi[i] = b[i];
}
BiTree c(ai, bi, lena);
c.PostOrder();
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/80429.html
標籤:新技術前沿
上一篇:小白求大神指點
