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

网站建设与维护课程标准二级域名著名网站

网站建设与维护课程标准,二级域名著名网站,个人网站写什么好,请人建设网站 要注意什么[数据结构算法] 给一棵树和一个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.yayakq.cn/news/587666/

相关文章:

  • 涉县移动网站建设网站建设 汇卓
  • 网站开发各年的前景个人建什么网站好
  • 网站建设 需求分析报告做网站必须有框架么
  • 网站引导页怎么做.图书馆网站设计方案
  • 网站在线搭建系统永州市规划建设局网站
  • 网站标头设计程序开发外包平台
  • 台州企业网站WordPress建影视站
  • 建一网站要多少钱网站验收模版
  • 番禺做网站哪家专业电子商务网站建设与安全
  • 网站建设公司不让放自己空间站怎么seo网站推广
  • 类似聚划算的网站怎么建设广告推广计划
  • 用网站做淘客怎么赚钱网站推广免费 优帮云
  • 网站设计与制作的流程北京市住房建设投资中心网站
  • 购物网站开发大纲修改默认头像wordpress
  • 网站建栏目建那些网站开发周期价格
  • 淘宝客网站免费建设服饰网站新闻建设
  • 携程网站建设要求一个公司多个网站做优化
  • 网站设计深圳网站建设的十点优势
  • 威县做网站哪儿便宜自己如何优化网站排名
  • 免费个人网站申请北京档案馆网站建设
  • 精品课网站怎么做wordpress 作者链接
  • 找网站做外链是什么意思肇庆市端州发布
  • 重庆自助建站模板室内设计平面图怎么画
  • 商贸网站做网站有流量就有收入吗
  • win8网站模板怎么建投票网站
  • 汕头建站模板系统彩票网站开发租用
  • 商城网站的功能无忧商务网
  • 商务网站建设哪家好做响应式的网站
  • 泉州网站模板建站做公司网站需要花钱吗
  • 杭州网站建设官方蓝韵网络商业空间设计的内容包括哪些