首页 > 代码库 > 二叉树中和为某一值的所有路径
二叉树中和为某一值的所有路径
引用编程之美,百度笔试题
1 //二叉树中和为某一值的所有路径 2 void findPath(treeNode* root,vector<treeNode*>& path, int& curSum,int expSum){ 3 if(root==NULL) 4 return; 5 //将当前节点的值放入path中(模仿栈),并将求和更新 6 path.push_back(root); 7 curSum=curSum+root->data; 8 //是否为叶节点 9 bool isLeaf=((root->lChild==NULL)&&(root->rChild==NULL));10 //当为叶节点,且当前的和等于要求的和11 if(isLeaf && curSum==expSum){12 for(vector<treeNode*>::iterator it=path.begin();it!=path.end();it++)13 cout<<*it<<" ";14 cout<<endl;15 }16 //当不是叶节点,则递归左右子树17 if(root->lChild!=NULL)18 findPath(root->lChild,path,curSum,expSum);19 if(root->rChild!=NULL)20 findPath(root->rChild,path,curSum,expSum);21 //凡是程序运行到这,说明已经到了叶节点;不管该叶节点是否在符合条件的路径上,都要从当前路径中删除该叶节点22 path.pop_back();23 curSum=curSum-root->data;24 path.pop_back();25 }
二叉树中和为某一值的所有路径
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。