(全代码)输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
#include <vector>
//#include<stdlib.h>
#include<iostream>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
};
class Solution {
public:
vector<vector<int> > buffer;
vector<int> tmp;
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
if(root==NULL)
return buffer;
tmp.push_back(root->val);
if((expectNumber-root->val)==0 && root->left==NULL && root->right==NULL)
{
buffer.push_back(tmp);
}
FindPath(root->left,expectNumber-root->val);
FindPath(root->right,expectNumber-root->val);
if(tmp.size()!=0)
tmp.pop_back();
return buffer;
}
};
int main()
{
TreeNode *test =new TreeNode();
test->val=4;
TreeNode *p,*p1;
p=test->left=new TreeNode();
p->val=8;
p1=test->right=new TreeNode();
p1->val=5;
p=p->left=new TreeNode();
p->val=3;
p1->left=new TreeNode();
p1->left->val=7;
p1=p1->right=new TreeNode();
p1->val=9;
/*p=test->right=new TreeNode();
p->val=1;
p1=p->left=new TreeNode();
p=p->right=new TreeNode();
p1->val=4;
p->val=6;*/
cout<<"现在是对了吗?"<<endl;
cout<<"我真的是非常的开心了"<<endl;
Solution *test2=new Solution();
vector<vector<int> > buffer2=test2->FindPath(test,16);
for (int i = 0; i < buffer2.size(); i++)
{
for(int j = 0; j < buffer2[0].size(); j++)
cout << buffer2[i][j] << " ";
cout << endl;
}
return 0;
}
一直都是在牛客上写代码,今天想要用软件将,牛客上面的代码进行实现,但是因为牛客中的库的封装,所以我们只管逻辑,而不需要进行代码数据的底层的定义,
所以我就下载了一个codeblocks,这里提供一个codeblocks软件的下载,这个安装是傻瓜式的安装,http://www.codeblocks.org/downloads/26
这里我们下载带编辑器的这个,当然我们也可以下载不带编辑器的,然后自己再重新进行下载编辑器。关于编辑器的内容,我在上一篇的博客中有写。
然后将这个软件配置好了之后,我就进行了代码的完善。下面给出我的劳动成果:


浙公网安备 33010602011771号