LeetCode 404左子葉之和 (二叉樹)
阿新 • • 發佈:2018-11-01
1.左子葉之和
計算給定二叉樹的所有左葉子之和。
示例:
3
/ \
9 20
/ \
15 7
在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24
思路:其實還是蠻簡單的,搜尋每個節點的最左子葉,並相加。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int sumOfLeftLeaves(TreeNode* root) { int sumOfLeft=0; stack<TreeNode*> stack; int count=0; int judgeRoot=1; while(root || !stack.empty()){ while(root){ stack.push(root); count=count+1; int value=root->val; judgeRoot=judgeRoot+1; if(root->left==NULL && count>=2 &&root->right==NULL){ //count主要是避免將右子葉的數加上 sumOfLeft+=value; } if(root==NULL && judgeRoot==2){ //這裡主要是用來判斷輸入root是[1]這種情況 return 0; } root=root->left; } if(!stack.empty()){ root=stack.top()->right; count=0; stack.pop(); } } return sumOfLeft; } };