当前位置: 首页 > news >正文

河南企业网站制作北京seo招聘网

河南企业网站制作,北京seo招聘网,陕西省建设教育培训网,服装业网站建设的策划[数据结构算法] 给一棵树和一个sum,判断是否存在从root到叶子结点的path之和等于sum? 可以使用两种方法求解 递归 CheckTreeSumRecursive 问题转换为递归判断左右子树是否满足路径和等于sum减去当前节点的值。 迭代 CheckTreeSumNonRecursive 使用两个…

[数据结构+算法] 给一棵树和一个sum,判断是否存在从root到叶子结点的path之和等于sum?

可以使用两种方法求解

  • 递归 CheckTreeSumRecursive

问题转换为递归判断左右子树是否满足路径和等于sum减去当前节点的值。

  • 迭代 CheckTreeSumNonRecursive

使用两个栈数据结构,一个存储节点,另一个存储对应的节点到root节点到sum,迭代遍历到叶子节点时进行判断。

详细代码如下:

#include <iostream>
#include <stack>using namespace std;struct TreeNode {TreeNode(int val_) : val(val_), left(nullptr), right(nullptr) {}int val;TreeNode *left;TreeNode *right;
};bool CheckTreeSumRecursive(TreeNode *head, int targetSum) {if (head == nullptr) {return false;}if (head->left == nullptr && head->right == nullptr && head->val == targetSum) {return true;}return CheckTreeSumRecursive(head->left, targetSum - head->val) || CheckTreeSumRecursive(head->right, targetSum - head->val);
}bool CheckTreeSumNonRecursive(TreeNode *head, int targetSum) {if (head == nullptr) {return false;}stack<TreeNode*> nodes;nodes.push(head);stack<int> sums;sums.push(head->val);while (!nodes.empty()) {TreeNode *node = nodes.top();nodes.pop();int sum = sums.top();sums.pop();if (node->left == nullptr && node->right == nullptr && sum == targetSum) {return true;}if (node->left != nullptr) {nodes.push(node->left);sums.push(sum + node->val);}if (node->right != nullptr) {nodes.push(node->right);sums.push(sum + node->val);}}return false;
}// 打印结果的辅助函数
void printResult(bool result) {cout << (result ? "true" : "false") << endl;
}int main() {// 创建示例二叉树TreeNode* root = new TreeNode(5);root->left = new TreeNode(4);root->right = new TreeNode(8);root->left->left = new TreeNode(11);root->left->left->left = new TreeNode(7);root->left->left->right = new TreeNode(2);root->right->left = new TreeNode(13);root->right->right = new TreeNode(4);root->right->right->right = new TreeNode(1);cout << "Test Recursive Solution...\n";cout << "Example 1: ";printResult(CheckTreeSumRecursive(root, 22)); // 输出 truecout << "Example 2: ";printResult(CheckTreeSumRecursive(root, 5)); // 输出 falsecout << "Example 3: ";printResult(CheckTreeSumRecursive(nullptr, 0)); // 输出 falsecout << "Test Recursive Solution...\n";cout << "Example 1: ";printResult(CheckTreeSumNonRecursive(root, 22)); // 输出 truecout << "Example 2: ";printResult(CheckTreeSumNonRecursive(root, 5)); // 输出 falsecout << "Example 3: ";printResult(CheckTreeSumNonRecursive(nullptr, 0)); // 输出 falsereturn 0;
}
http://www.mnyf.cn/news/45908.html

相关文章:

  • 贵州微信网站建设sem优化
  • 中国金湖建设网站列表网推广效果怎么样
  • 手机怎么解除禁止访问网页国外seo网站
  • 山东省政府办公厅综合处河南seo优化
  • 百度百科网站开发做网络推广的公司
  • 怎么做网络推广和宣传运营推广seo招聘
  • 餐饮行业网站建设郑州seo优化哪家好
  • 网站建设开发团队介绍韩国网站
  • 做ppt的动图下载哪些网站关键词在线优化
  • 网站建设我们的优势最佳磁力链ciliba
  • 网页设计网站布局分析厦门seo俱乐部
  • lamp环境wordpressseo招聘网
  • 网站上传到虚拟主机网站如何快速收录
  • 宝塔网站301重定向怎么做百度一下你就知道123
  • 做企业网站用什么网络广告的优势有哪些
  • mugeda做网站哈尔滨最新
  • 怎么做便民信息网站重庆关键词快速排名
  • wordpress 菜单seo系统培训
  • c 做网站网站保定百度首页优化
  • 网页美工设计简单流程泉州关键词优化排名
  • 如何做网站美工的网络营销的四种模式
  • 资溪做面包招聘的网站百度热词搜索指数
  • 郑州有做彩票网站的吗电商网站排名
  • wordpress如何导入附件兰州seo实战优化
  • 工商局网站怎么做增项个人免费网上注册公司
  • 什么是空壳网站网推渠道
  • 线上推广的目的淄博网站优化
  • 长沙米拓建站网站信息组织优化
  • 网站建设优化兰州seo外包
  • 怎么上网站武汉做网络推广的公司