搜素二叉树的权值为某值的路径
void findPath(node *root,int expect,int current,vector<int> &path)
{
if(root!=NULL)
{
current += root->val;
path.push_back(root->val);
if(root->left==NULL && root->right==NULL &¤t==expect)
{
cout<<"a path is found:";
vector<int>::iterator iter;
for(iter = path.begin();iter!=path.end()-1;iter++)
{
cout<<*iter<<"->";
}
cout<<*iter<<endl;
return;
}
findPath(root->left,expect,current,path);
findPath(root->right,expect,current,path);
path.pop_back();
}
}
二叉树变双向链表
void convertnode(node *root,node *&lastOfList)
{
if(root==NULL) return;
if(root->left!=NULL) convertnode(root->left,lastOfList);
root->left = lastOfList;
if(lastOfList!=NULL) lastOfList->right = root;
lastOfList = root;
if(root->right!=NULL) convertnode(root->right,lastOfList);
}
node *convert(node* root)//准备工作
{
node *LastOfList = NULL;
convertnode(root,LastOfList);
node *headOfList = LastOfList;
while(headOfList!=NULL && headOfList->left!=NULL)
{
cout<<headOfList->val<<"->";
headOfList = headOfList->left;
}
cout<<headOfList->val<<endl;
return headOfList;
}