输入一个整数和一棵二元树
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如输入整数22和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10,12和10,5,7。
#include <iostream> #include <vector> using namespace std; typedef struct BiNode { struct BiNode* lchild; struct BiNode* rchild; int data; }BiNode,*BiTree; class Path { private: vector<int> v; int sum; int total; public: Path(int sum); void findPath(BiTree root); void printPath(); }; Path::Path(int sum):sum(sum),total(0) { }; void Path::printPath() { for(i = 0;i<v.size()-1;i++) cout<<v[i]<<" "; cout<<endl; }; void Paht::findPath(BiTree root) { if(NULL!=root) { if(total+root->data==sum) { v.push_back(root->data); printPaht(); v.pop_back(); return ; } else { v.push_back(root->data); findPath(root->lchild); v.pop_back(); findPath(root->rchild); } } };
输入一个整数和一棵二元树
最新推荐文章于 2021-04-20 20:45:51 发布