Net网站开发多少钱,沧州网站建设沧州,wordpress 本机模拟,网站后台怎么给图片做水印原题链接#xff1a;404. 左叶子之和
思路#xff1a; 首先要注意是判断左叶子#xff0c;不是二叉树左侧节点#xff0c;所以不要上来想着层序遍历。 节点A的左孩子不为空#xff0c;且左孩子的左右孩子都为空#xff08;说明是叶子节点#xff09;#xff0c;那么A节…原题链接404. 左叶子之和
思路 首先要注意是判断左叶子不是二叉树左侧节点所以不要上来想着层序遍历。 节点A的左孩子不为空且左孩子的左右孩子都为空说明是叶子节点那么A节点的左孩子为左叶子节点 判断当前节点是不是左叶子是无法判断的必须要通过节点的父节点来判断其左孩子是不是左叶子 该节点的左节点不为空该节点的左节点的左节点为空该节点的左节点的右节点为空则找到了一个左叶子 当遇到左叶子节点的时候记录数值然后通过递归求取左子树左叶子之和和 右子树左叶子之和相加便是整个树的左叶子之和
全代码
class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {if(root NULL) return 0;//空树if(root -left NULL root -right 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;}};