C语言实现找出二叉树中某个值的所有路径的方法
本文实例讲述了C语言实现找出二叉树中某个值的所有路径的方法,是非常常用的一个实用算法技巧。分享给大家供大家参考。
具体实现方法如下:
#include<iostream> #include<vector> #include<iterator> #include<algorithm> usingnamespacestd; vector<int>result; structNode{ Node(inti=0,Node*pl=NULL,Node*pr=NULL):data(i),left(pl),right(pr){} intdata; Node*left; Node*right; }; Node*Construct() { Node*node4=newNode(7); Node*node3=newNode(4); Node*node2=newNode(12); Node*node1=newNode(5,node3,node4); Node*root=newNode(10,node1,node2); returnroot; } voidprint() { copy(result.begin(),result.end(),ostream_iterator<int>(cout,"")); cout<<endl; } voidPrintSum(Node*root,intsum) { if(root==NULL) return; result.push_back(root->data); if(root->left==NULL&&root->right==NULL&&root->data==sum){ print(); } PrintSum(root->left,sum-root->data); PrintSum(root->right,sum-root->data); result.pop_back(); } voidmain() { Node*root=Construct(); PrintSum(root,22); }
感兴趣的朋友可以测试运行一下本文实例。相信本文所述算法对大家C程序算法设计的学习有一定的借鉴价值。