Chinaunix首页 | 论坛 | 博客

AAA

  • 博客访问: 18396
  • 博文数量: 33
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-17 08:23
个人简介

好记性不如烂笔头,记录学习历程和随想云云,欢迎各位大虾拍砖

文章分类

全部博文(33)

文章存档

2015年(33)

我的朋友
最近访客

分类: C/C++

2015-05-07 23:25:07

【问题描述】

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,
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \      \
        7    2      1

return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.


【解决方案】

点击(此处)折叠或打开

  1. /**
  2.  * Definition for binary tree
  3.  * struct TreeNode {
  4.  * int val;
  5.  * struct TreeNode *left;
  6.  * struct TreeNode *right;
  7.   * };
  8.  */
  9. bool hasPathSum(struct TreeNode *root, int sum) {
  10.     if(NULL == root)
  11.     {
  12.         return false;
  13.     }
  14.     
  15.     if(NULL == root->left && NULL == root->right)
  16.     {
  17.         return sum == root->val;
  18.     }
  19.     
  20.     return hasPathSum(root->left, sum - root->val)
  21.             || hasPathSum(root->right, sum - root->val);
  22. }

阅读(283) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~