程序填空题:求根结点到x结点的路径(递归法)
求根结点到x结点的路径(假定结点不重复)。
```c++
#include
#include
#include
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T){
char ch;
cin>>ch;
if(ch=='#') T=NULL;
else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
bool Findxpath(BiTree bt,int x,vector tmppath,vector &path)
{
if (bt==NULL)
return false;
;
if (bt->data==x)
{
;
;
}
bool find=;
if (find)
return true;
else
return ;
}
int main(){
BiTree T;
char x;
vectortmppath;
vectorpath;
CreateBiTree(T);
cin>>x;
Findxpath(T,x,tmppath,path);
for(int i=0;i cout< return 0;
}
```
### 输入样例:
输入一行字符序列先序递归构建二叉树。每个字符对应一个结点,#表示空结点。第二行输入一个结点值x。
```in
52#3##41##6##
3
```
### 输出样例:
输出从根到结点x的路径。
```out
5 2 3
```
答案:
第1空:tmppath.push_back(bt->data)
第2空:path=tmppath
第3空:return true
第4空:Findxpath(bt->lchild,x,tmppath,path)
第5空:Findxpath(bt->rchild,x,tmppath,path)
```c++
#include
#include
#include
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T){
char ch;
cin>>ch;
if(ch=='#') T=NULL;
else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
bool Findxpath(BiTree bt,int x,vector
{
if (bt==NULL)
return false;
;
if (bt->data==x)
{
;
;
}
bool find=;
if (find)
return true;
else
return ;
}
int main(){
BiTree T;
char x;
vector
vector
CreateBiTree(T);
cin>>x;
Findxpath(T,x,tmppath,path);
for(int i=0;i
}
```
### 输入样例:
输入一行字符序列先序递归构建二叉树。每个字符对应一个结点,#表示空结点。第二行输入一个结点值x。
```in
52#3##41##6##
3
```
### 输出样例:
输出从根到结点x的路径。
```out
5 2 3
```
答案:
第1空:tmppath.push_back(bt->data)
第2空:path=tmppath
第3空:return true
第4空:Findxpath(bt->lchild,x,tmppath,path)
第5空:Findxpath(bt->rchild,x,tmppath,path)