在二元树中找出和为某一值的所有路径
2014-07-01 21:08
190 查看
有了第一题作为基础,这一题写起来也相当简单。只是搜索的时候呢,可以剪枝一下。这个是搜索的技巧,用多了就自然有这个习惯了!
建树依然建立二元查找树,然后用深搜,用一个path数组把结点的值存储起来。用深搜打印路径比较方便。没有什么特殊和很难的地方。
这里需要注意的是:这个系列中我在系列(一)中上传的pdf文件里题目4的图形没对,可能会有误导。树的形状应该是
10
最后,依然贴代码吧!
本文出自 “每天进步一点点” 博客,请务必保留此出处/article/4520648.html
建树依然建立二元查找树,然后用深搜,用一个path数组把结点的值存储起来。用深搜打印路径比较方便。没有什么特殊和很难的地方。
这里需要注意的是:这个系列中我在系列(一)中上传的pdf文件里题目4的图形没对,可能会有误导。树的形状应该是
10
/ \
5 12
/ \
4 7
最后,依然贴代码吧!
/* * Problem_4.cpp * 在二元树中找出和为某一值的所有路径 * Created on: 2012-8-28 * Author: Administrator */ #include<stdio.h> struct BinaryTreeNode{ int data; BinaryTreeNode *pLeft,*pRight; BinaryTreeNode(){ pLeft=pRight=NULL; } }; #define M 100 int path[M],top=-1; bool addNode(BinaryTreeNode **root,int value){ if(*root!=NULL){ if(value>(*root)->data){ addNode(&((*root)->pRight),value); }else if(value<(*root)->data){ addNode(&((*root)->pLeft),value); }else{ printf("repeated node!\n"); return false; } }else{ BinaryTreeNode *p; p=new BinaryTreeNode(); p->data=value; *root=p; } return true; } /* * * */ void search(BinaryTreeNode *cur,int sum,int &s){ path[++top]=cur->data; if(cur->pLeft==NULL&&cur->pRight==NULL&&s==sum+cur->data){ for(int i=0;i<=top;i++){ printf("%d ",path[i]); } printf("\n"); } if(sum+cur->data>=s){//剪枝 --top; return; } if(cur->pLeft!=NULL) search(cur->pLeft,sum+cur->data,s); if(cur->pRight!=NULL) search(cur->pRight,sum+cur->data,s); --top; } int main(){ int data[5]={10,5,12,4,7}; BinaryTreeNode *root=NULL; for(int i=0;i<5;i++){ addNode(&root,data[i]); } int a=22; search(root,0,a); return 0; }
本文出自 “每天进步一点点” 博客,请务必保留此出处/article/4520648.html
相关文章推荐
- 程序员面试题精选(04)-在二元树中找出和为某一值的所有路径
- 每天一道算法题(9)——在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 【面试题】在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 面试100题:4.在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 每天一道算法题(9)——在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 微软面试题系列(四):在二元树中找出和为某一值的所有路径
- 每日一道算法题4——在二元树中找出和为某一值的所有路径
- 3.在二元树中找出和为某一值的所有路径
- 每天一道算法题(1)——在二元树中找出和为某一值的所有路径
- 程序员面试题精选(04)-在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 数据结构面试题1.2.5-在二元树中找出和为某一值的所有路径