自己怎么做云购网站吗,桂林做网站哪家公司好,北京社保网上服务平台官网,wordpress 折叠文章题目#xff08;leecode T404#xff09;#xff1a;
给定二叉树的根节点 root #xff0c;返回所有左叶子之和。 方法#xff1a;
迭代法#xff1a;计算所有的左叶子节点#xff0c;那我们就必然要找到所有的左叶子节点。那么怎么找呢#xff1f;如何针对cur-l…题目leecode T404
给定二叉树的根节点 root 返回所有左叶子之和。 方法
迭代法计算所有的左叶子节点那我们就必然要找到所有的左叶子节点。那么怎么找呢如何针对cur-left NULLcur-right NULL的话只能判断当前节点是叶子节点而无法判断出具体是左还是右。因此我们需要从左叶子节点的父节点进行判断即cur-left ! NULLcur-left NULLcur-right NULL,这样的节点的左孩子结点就是一个左叶子节点。我们这样就确定好了找到左叶子节点的判断逻辑。下面分析迭代的三部曲。
1确定传入的参数和返回值传入的参数就是要处理的树节点返回值是左叶子节点的数值之和因此需要为int进行迭代累加得到的就是做叶子节点的和。
2确定终止条件当我们遍历到了空节点时肯定是没有左孩子结点了就需要终止。
3确定单层的处理逻辑当我们找到了左叶子节点时就记录左叶子节点的值同时递归根节点的左右子树最后将两值相加即可得到该树的左叶子节点之和。
题解
class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {if(root NULL) return 0; //终止逻辑int leftValue sumOfLeftLeaves(root-left); //递归左子树if(root-left ! NULL root-left-left NULL root-left-right NULL){ //找到左叶子节点就记录其数值leftValue root-left-val;}int rightValue sumOfLeftLeaves(root-right); //递归右子树int sum leftValue rightValue;return sum;}
};