PathInTree

来源:互联网 发布:网络电视如何连接wifi 编辑:程序博客网 时间:2024/05/21 14:10
#define Nil 0#include<stdio.h>#include<stdlib.h>#include<vector>typedef struct BiTNode{int data;BiTNode* lchild;BiTNode* rchild;}*BiTree;void CreateBiTree(BiTree &T){int temp;printf("请输入节点的值!\n");scanf("%d",&temp);if(temp==Nil)T=NULL;else{T=(BiTNode*)malloc(sizeof(BiTNode));if(!T){printf("内存分配失败\n");return;}T->data=temp;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}}void FindSumPath(const BiTree &T,int expectedSum,std::vector<int> &vector,int currentSum){currentSum+=T->data;vector.push_back(T->data);bool flag=T->lchild==NULL&&T->rchild==NULL;if(currentSum==expectedSum&&flag){std::vector<int>::iterator iter=vector.begin();while(iter!=vector.end()){printf("%3d",*iter);iter++;}printf("\n");}if(T->lchild)FindSumPath(T->lchild,expectedSum,vector,currentSum);if(T->rchild)FindSumPath(T->rchild,expectedSum,vector,currentSum);vector.pop_back();}void FindInPath(BiTree T,int expectedSum){if(T==NULL){printf("树为空\n");return;}int currentSum=0;std::vector<int> vector;FindSumPath(T,expectedSum,vector,currentSum);}void main(){int sum;BiTree T;CreateBiTree(T);printf("请输入节点的和\n");scanf("%d",&sum);FindInPath(T,sum);}

0 0
原创粉丝点击