//==========================================定义头部
#include <iostream>
#include<vector>
using namespace std;
struct TreeNode {
int data;
struct TreeNode *lchild, *rchild;//左右孩子
};
TreeNode *T;
void CreateBiTree(TreeNode* &T) {
//按先序输入二叉树中结点的值(一个字符),空格字符代表空树,
//构造二叉树表表示二叉树T。
int num;
cin >> num;
if (num == -1) T = NULL;//其中getchar()为逐个读入标准库函数
else {
T = new TreeNode;//产生新的子树
T->data = num;
CreateBiTree(T->lchild);//递归创建左子树
CreateBiTree(T->rchild);//递归创建右子树
}
}
void PathSum(TreeNode *root, int target, vector<int> &vec1, int &sum, vector<vector<int>>&vec2) {
vec1.push_back(root->data);
cout << root->data << endl;
sum += root->data;
if (root->lchild == NULL && root->rchild == NULL && sum == target) {
vec2.push_back(vec1);
}
if (root->lchild != NULL) {
PathSum(root->lchild, target, vec1, sum, vec2);
}
if (root->rchild != NULL) {
PathSum(root->rchild, target, vec1, sum, vec2);
}
sum -= root->data;
cout << sum << endl;
vec1.pop_back();
}
void main() {
// Write your code here
TreeNode *root;
CreateBiTree(root);
int target=0, sum = 0;
vector<vector<int>>vec2;
vector<int>vec1;
PathSum(root, target, vec1, sum,vec2);
}
二叉树路径和调试
最新推荐文章于 2024-04-15 13:26:36 发布