[2016/11/16]求一棵樹左葉子的和
阿新 • • 發佈:2019-01-09
不能一日不寫程式碼!做題練手。
這種情況肯定一下就想到遞迴啦。首先明確返回條件(是葉子節點)。然後,對於每一層遞迴,其主角都是以引數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;
}