404. 左叶子之和
题目描述:给定二叉树的根节点 root ,返回所有左叶子之和。
解答:
法一:迭代法(层序遍历)
看到本题首先思考的是,如何确定是左叶子?叶子很好确定,左右子节点均为空即可,但是左叶子应该如何确定?
经过观察,如果将空节点也当作一个存在的节点,每一层的左节点在该层中序号数为2的倍数(0,2,4,8......)。
因此可以采用层序遍历,将空节点也入队,视为一个节点,但是不进行处理,仅用于计数。遇到左右子节点均为空且对2求余为0的节点(即为左叶子)求和即可。
代码实现:
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
queue<TreeNode*>que;
int sum = 0;
//只有一个节点的树额外处理
if (root->left == NULL && root->right == NULL) return

本文详细介绍了两种二叉树问题的解决方案:一是计算所有左叶子节点的和,通过迭代和递归两种方法实现;二是寻找二叉树最底层最左边的节点值,同样给出迭代和递归的解题思路。通过层序遍历和递归遍历,结合二叉树的特性,有效地解决了这两个问题。
最低0.47元/天 解锁文章
374

被折叠的 条评论
为什么被折叠?



