首页 > 代码库 > 剑指offer系列源码-二叉树中和为某一值的路径
剑指offer系列源码-二叉树中和为某一值的路径
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
#include <iostream> #include<stdio.h> #include<vector> using namespace std; struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right; }; //递归判断路劲和是否为预期值,函数返回时去除根节点的指,路径跟着删除 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; }
剑指offer系列源码-二叉树中和为某一值的路径
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。