二叉树中所有路径的和为一特定值

来源:互联网 发布:ubuntu 15.04 mate 源 编辑:程序博客网 时间:2024/06/14 03:12

这里与之前不同的是,我们选择的路径的规定是起点可以是任何节点,同样终点也可以是任何节点

#include<iostream>#include<vector>using namespace std;struct Node{int val;Node* left;Node* right;Node(int x=0):val(x),left(NULL),right(NULL){}};void findpath(Node* root,vector<Node*>&vec){if(NULL!=root){vec.push_back(root);if(root->left==NULL&&root->right==NULL){;}else{findpath(root->left,vec);findpath(root->right,vec);}//计算其中的和是不是符合题意vector<Node*>::iterator itr=vec.begin();int sum=0;for(;itr!=vec.end();itr++){sum+=(*itr)->val;}if(sum==12){cout<<"we found it\n";}vec.pop_back();}}void Travel(Node* root){if(root!=NULL){vector<Node*> m_vec;findpath(root,m_vec);Travel(root->left);Travel(root->right);}}int main()  {      Node *tmp ;      Node* root = new Node(10);      tmp = new Node(5);      root->left = tmp ;      tmp = new Node(12);      root->right = tmp;      tmp = new Node(4);      root->left->left = tmp;      tmp = new Node(7);      root->left->right = tmp;      vector<Node*> v;      Travel(root);      return 0;  }   


0 0