国土分局网站建设方案,外贸seo网站,东莞市土木建筑学会,镇江门户网技术提高是一个循序渐进的过程#xff0c;所以我讲的leetcode算法题从最简单的level开始写的#xff0c;然后到中级难度#xff0c;最后到hard难度全部完。目前我选择C语言#xff0c;Python和Java作为实现语言#xff0c;因为这三种语言还是比较典型的。由于篇幅和精力有…技术提高是一个循序渐进的过程所以我讲的leetcode算法题从最简单的level开始写的然后到中级难度最后到hard难度全部完。目前我选择C语言Python和Java作为实现语言因为这三种语言还是比较典型的。由于篇幅和精力有限其他语言的实现有兴趣的朋友请自己尝试。初级难度说的差不多的时候我打算再加点其他内容我可能会从操作系统到协议栈从分布式聊到大数据框架从大数据聊到人工智能... ...。如果有任何问题可以在文章后评论或者私信给我。我会持续分享下去敬请您的关注。LeetCode 404. 左叶子之和(Sum of Left Leaves)问题描述计算给定二叉树的所有左叶子之和。示例C语言实现我们知道求所有叶子节点的方法是递归的将左右子树的叶子节点值相加。这道题只是在此基础上增加了一个条件而已即需要加一个判断以确定一个叶子节点是否是左叶子节点。这里我们有两种方法。第一种方法直接判断是否是左叶子节点如果是那么返回它的值与右边兄弟节点递归的结果的和因为它的兄弟节点不一定是叶子节点所以还要递归。如果某节点的左右节点都不是叶子节点那么就返回其左右节点递归的和这个很容易理解。代码如下第二种方法这需要定义一个新的递归函数使得在遍历的时候标记接下来的节点是否是左节点。如果下面要遍历的节点是当前节点的左节点那么除了将左节点传递给新函数外还有传递一个true值给新函数以标记这是一个左节点同样的如果是右节点传递右节点和一个false给新函数。那么新函数在做处理的时候首先看传过来的参数如果标记这是一个左节点那么返回它的值。否则继续递归该节点的子节点并返回他们的和。代码如下从代码来看这两种实现都很类似但是原理是有些不同的。他们的算法复杂度是相同的性能上的表现也基本一致。python语言的实现python的实现用的是第一种方式第二种方式读者自行尝试。代码如下Java语言的实现Java 的实现用的是第一种方式第二种方式读者自行尝试。代码如下