112 - Tree Summing***

本文介绍了使用递归方法解决建树求和问题的两种方式:仅保留节点和构建完整树。通过C++代码实现,展示了如何根据输入构建树结构,并判断树节点之和是否等于目标值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 第一次接触建树解题 简单建树、历编,求和问题 解题思路:递归 方法一:只保留树的节点部分 方法二:建一棵完整的树 cin.clear()清除 */ /*方法一: #include <iostream> #include <string> using namespace std; bool ok; bool tree_sum(int n,int sum) { char ch; cin>>ch; int v; if(!((cin>>v)==0)) { n+=v; bool t; t=tree_sum(n,sum)|tree_sum(n,sum); if(!ok && !t) ok=(n==sum); cin>>ch; return true; } else { cin.clear(); cin>>ch; return false; } } int main() { int sum; while(!((cin>>sum)==0)) { ok=false; tree_sum(0,sum); cout<<(ok?"yes":"no")<<endl; } return 0; } */ //////////////////////////////////方法二: #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; bool ok; struct Node { Node *lchild,*rchild; }; Node *creat_tree(int n,int sum) { char ch; cin>>ch; int v; if(!((cin>>v)==0)) { n+=v; Node *root=(Node *)malloc(sizeof(Node)); root->lchild=creat_tree(n,sum); root->rchild=creat_tree(n,sum); if(!ok && root->lchild==NULL && root->rchild==NULL) ok=(n==sum); cin>>ch; return root; } else { cin.clear(); cin>>ch; return NULL; } } int main() { int sum; while(!((cin>>sum)==0)) { ok=false; creat_tree(0,sum); cout<<(ok?"yes":"no")<<endl; } return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值