LeetCode :. 112総経路サム・パス(C言語)

説明タイトル:
二分木と目的地が与えられると、ツリー経路にリーフノードにルートノードは、このルート上のすべてのノードが存在し、目標値に等しいが付加されているか否かを判定する。

説明:リーフノードは、ノードが子ノードを持たないです。

例:
、次のバイナリツリーを考えると、ターゲットとの和= 22

      5
     / \
    4   8
   /   / \
  11  13  4
 /  \      \
7    2      1

trueを返し、なぜなら、ターゲットパスの存在及びリーフノード22 5-> 4-> 11-> 2のルートノード。

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/path-sum
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。
回答:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


bool func(struct TreeNode* root, int cur, int sum)
{
    if(NULL == root) return false;
    
    cur = cur + root->val;
    
    if(NULL == root->left && NULL == root->right)
    {
        if(sum == cur) return true;
    }

    return func(root->left, cur, sum) || func(root->right, cur, sum);
}

bool hasPathSum(struct TreeNode* root, int sum)
{   
    int cur = 0;
    return func(root,cur,sum);
}

結果:

ここに画像を挿入説明

公開された157元の記事 ウォンの賞賛119 ビュー260 000 +

おすすめ

転載: blog.csdn.net/wangqingchuan92/article/details/104779571