//二叉树中和为某一值的路径
#include<stdio.h>
#include<stack>
#include<algorithm>
#include<string>
#include<iostream>
#include<vector>
using namespace std;
typedef struct Binode
{
int data;
struct Binode *lchid;
struct Binode *rchild;
}Binode,*Bitree;
void BitreeCreate(Bitree &T)///????此处出错
{
int ch;
cin>>ch;
if(ch==0)
T=NULL;
else
{
T=(Binode *)malloc(sizeof(Binode));
T->data=ch;
BitreeCreate(T->lchid);
BitreeCreate(T->rchild);
}
}
void findpath1(Bitree T,int exsum,int currnum,vector<int>& path)
{
currnum+=T->data;
path.push_back(T->data);
bool isleaf=T->lchid==NULL && T->rchild==NULL;
if(currnum==exsum && isleaf)
{
cout<<"path is:"<<endl;
vector<int>::iterator iter;
for(iter=path.begin();iter!=path.end();iter++)
{
cout<<*iter<<"\t";
cout<<endl;
}
}
if(T->lchid)
{
findpath1(T->lchid,exsum,currnum,path);
}
if(T->rchild)
{
findpath1(T->rchild,exsum,currnum,path);
}
path.pop_back();
}
void findpath(Bitree T,int exsum)
{
if(T==NULL)
return;
vector<int>path;
int currsum=0;
findpath1(T,exsum,currsum,path);
}
int main()
{
Bitree T ;
T=NULL;
int num;
BitreeCreate(T);
cin>>num;
findpath(T,num);
}
二叉树中和为某一值的路径
最新推荐文章于 2022-01-05 17:05:44 发布