您的位置:首页 > 其它

leetcode 404 Sum of Left Leaves

2017-02-18 15:51 645 查看
Findthesumofallleftleavesinagivenbinarytree.

Example:

3
/\
920
/\
157

Therearetwoleftleavesinthebinarytree,withvalues9and15respectively.Return24.

分析:关键是怎么判断它是左叶子;


/**
*Definitionforabinarytreenode.
*structTreeNode{
*intval;
*TreeNode*left;
*TreeNode*right;
*TreeNode(intx):val(x),left(NULL),right(NULL){}
*};
*/
classSolution{
public:
intsumOfLeftLeaves(TreeNode*root){
if(root==NULL)
return0;
TreeNode*temp=root->left;
if(temp&&(temp->left==NULL)&&(temp->right==NULL))
returntemp->val+sumOfLeftLeaves(root->right);
else
returnsumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);
}
};


也可用bfs

网上大神的dfs:深度优先遍历,将所有结点从根结点开始遍历一遍,设立isLeft的值,当当前结点是叶子节点并且也是左边,那就result加上它的值

/**
*Definitionforabinarytreenode.
*structTreeNode{
*intval;
*TreeNode*left;
*TreeNode*right;
*TreeNode(intx):val(x),left(NULL),right(NULL){}
*};
*/
classSolution{
public:
intresult=0;
intsumOfLeftLeaves(TreeNode*root){
if(root==NULL)
return0;
dfs(root,false);
returnresult;
}
voiddfs(TreeNode*root,boolisLeft){
if(root->left==NULL&&root->right==NULL){
if(isLeft==true)
result+=root->val;
return;
}
if(root->left!=NULL)
dfs(root->left,true);
if(root->right!=NULL)
dfs(root->right,false);
}
};



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: