1. 程式人生 > >[2016/11/16]求一棵樹左葉子的和

[2016/11/16]求一棵樹左葉子的和



不能一日不寫程式碼!做題練手。

這種情況肯定一下就想到遞迴啦。首先明確返回條件(是葉子節點)。然後,對於每一層遞迴,其主角都是以引數root為根節點的樹。遞迴要做的,就是把這棵樹左子樹的左葉子和找出來,然後把這棵樹右子樹的左葉子和找出來,然後返回二者的和。

程式碼如下:(資料是按層次遍歷給出的。)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int
sumOfLeftLeaves(struct TreeNode* root) { int valeft = 0; int varight = 0; if(root == NULL) return 0; varight = sumOfLeftLeaves(root->right); if((root->left!=NULL) && (root->left->left == NULL) && (root->left->right == NULL)) return root->left
->val + varight; else valeft = sumOfLeftLeaves(root->left); return varight + valeft; }