Path Sum
来源:互联网 发布:java程序员的浪漫代码 编辑:程序博客网 时间:2024/05/17 04:29
Description:
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the
values along the path equals the given sum.
For example: Given the below binary tree and sum = 22,
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
代码:
#include <iostream>#include <vector>#include <stack>#include <algorithm>#define Elementype intusing namespace std;int index = 0;typedef struct TreeNode //树结点{ Elementype val; TreeNode *left; TreeNode *right; TreeNode(Elementype x) : val(x), left(nullptr), right(nullptr) {}} *Tree;//使用先序遍历创建创建二叉树void MakeBinaryTree(Tree &T, Elementype value[]){ Elementype c = value[index++]; if (c == '#') T = nullptr; else { T = new TreeNode(c); MakeBinaryTree(T->left, value); MakeBinaryTree(T->right, value); }}//先序遍历void preOrderTraversal(Tree root){ stack<Tree> sk; Tree p = root; if (p) sk.push(p); while (!sk.empty()) { p = sk.top(); cout << p->val<<" "; sk.pop(); if (p->right) sk.push(p->right); if (p->left) sk.push(p->left); }}bool pathSum(Tree root, int sum){ if (!root) return false; if (root->left == nullptr && root->right == nullptr) //叶子结点 return sum == root->val; return pathSum(root->left, sum - root->val) || pathSum(root->right, sum - root->val);}int main(){ Tree root = nullptr; //根结点 Elementype data[] = { 5, 4, 11, 7,'#','#',2,'#','#','#', 8, 13, '#', '#', 4, '#', 1,'#','#'}; MakeBinaryTree(root, data); cout << "先序遍历: "; preOrderTraversal(root); cout << endl; int sum = 22; cout << boolalpha << pathSum(root, sum)<<endl; system("pause"); return 0;}
测试:
0 0
- Path Sum && Path Sum ||
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- CentOS 6.5/6.6 安装mysql 5.7 最完整版教程
- HttpUrlConnection请求数据
- 热加载
- CAD 选择集
- 【Qt开发】Qt中显示图像的两种方法对比
- Path Sum
- Android 一个改善的okHttp封装库
- 架构设计:负载均衡层设计方案(1)——负载场景和解决方式
- Shader学习之案例—《镜子1》
- HttpUrlConnection+Get请求
- 有关/etc/sysconfig/network-scripts/ifcfg-eth0
- jquery的中文乱码问题
- Linux下php扩展安装
- C++ 对比 Scheme(Lisp)