大场网站建设,源码下载网站源码,论坛发帖,企业网站建设客户需求调查问卷404. 左叶子之和
简单#xff08;有点意思 第一次我也写错了 先自己递归去写 如果不行看答案 我感觉还是蛮不错的#xff09; 示例 1#xff1a; 输入: root [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中#xff0c;有两个左叶子#xff0c;分别是 9 和 15…404. 左叶子之和
简单有点意思 第一次我也写错了 先自己递归去写 如果不行看答案 我感觉还是蛮不错的 示例 1 输入: root [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中有两个左叶子分别是 9 和 15所以返回 24示例 2:
输入: root [1]
输出: 0 lass Solution {
public:int sumOfLeftLeaves(TreeNode* root) {if(rootnullptr)return 0;//如果roor为空直接返回if(root-leftnullptrroot-rightnullptr)return 0;//走到叶子节点直接返回只针对右叶子可以不要 节省时间向下遍历 int leftsum sumOfLeftLeaves(root-left);//先遍历左子树 并记录//为什么 要储存起来 直接返回在return那块加起来不好吗//直接返回 如果根左子树只有一个节点 就直接结束该函数了 不会今行右子树的遍历if(root-left!nullptr //保证下面的条件不会对空节点进行解引用 root-left-leftnullptrroot-left-rightnullptr){leftsum root-left-val;}int rightsum sumOfLeftLeaves(root-right);//在遍历右子树return leftsumrightsum;}
};
当然这道题也可以利用栈去模拟递归 也可以层序遍历去处理队列的运用 基本没什么变化
代码就不给了 如果你了解 递归的模拟 以及 层序遍历 相信不在话下