输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
void findPath(BinaryTreeNode* root,int expectedNum,vector<int>& path,int& currentSum){
currentSum+=root->value;
path.push_back(root->value);
bool isLeaf = root->left==NULL&&root->right==NULL;
if(currentSum==expectedNum&&isLeaf){
printf("A path is found: ");
vector<int>::iterator iter = path.begin();
for(;iter!=path.end();++iter){
printf("%d\t",*iter);
}
printf("\n");
}
if(root->left){
findPath(root->left,expectedNum,path,currentSum);
}
if(root->right){
findPath(root->right,expectedNum,path,currentSum);
}
currentSum -= root->value;
path.pop_back();
}
//主程序
void findPath(BinaryTreeNode* root ,int expectedNum){
if(root==NULL)return;
vector<int> path;
int currentSum = 0;
findPath(root,expectedNum,path,currentSum);
}
int main(){
return 0;
}
本文介绍了一种算法,用于查找二叉树中所有节点值之和等于特定整数的路径。该算法从树的根节点开始遍历到叶子节点,并记录符合条件的路径。
331

被折叠的 条评论
为什么被折叠?



