二叉树中和为某一值的路径

来源:互联网 发布:日本端口 编辑:程序博客网 时间:2024/06/06 02:20

 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

解题思路:由于要求的是直到叶节点的一条路径,所以要到最后一个节点才算是找到了这条路径。遍历二叉树,采用递归的方法,将满足条件的路径压入一维数组当中,注意当找到满足条件的路径时,先将数组压入二维数组,然后将一维数组中的每个元数弹出,以存放新的路径。

vector<vector<int> > res;vector<int> tmp;vector<vector<int> > FindPath(TreeNode* root, int expectNumber) {if (root == NULL || expectNumber <= 0)return res;findpath(root, expectNumber);    return res;}void findpath(TreeNode* root, int expectNumber){tmp.push_back(root->val);if (root->val == expectNumber&&!root->left&&!root->right)//知道最后的叶节点才算成功{res.push_back(tmp);}else{if (root->left)findpath(root->left, expectNumber - root->val);if (root->right)findpath(root->right, expectNumber - root->val);}tmp.pop_back();}


原创粉丝点击