做网站贵吗危机公关
目录
一、二叉树理论知识
二、题目思路
三、相关算法题目
四、总结
一、二叉树理论知识
详见:代码随想录刷题day34|(二叉树篇)二叉树的递归遍历-CSDN博客
二、题目思路
迭代法:层序遍历
层序遍历每一层节点,队列存储待处理节点,单独处理左叶子节点,如果是左叶子节点,就将节点值加和,否则只入队,不加和;
易错点:注意求的是左叶子节点,两个条件:左节点+叶子节点,首先判断是否为左节点,接着还要保证是叶子节点(左右子树均为空)
递归法:
单层递归逻辑核心:判断当前节点的左子节点是否为叶子节点,如果是,则累加其值,否则,继续递归遍历左子树和右子树;递归的终止条件是当前节点为空;
可以前序遍历、后序遍历、中序遍历;
三、相关算法题目
404.左叶子节点
迭代法:
class Solution {public int sumOfLeftLeaves(TreeNode root) {//迭代法:层序遍历Deque<TreeNode> deque = new ArrayDeque<>();if(root == null) return 0;deque.offer(root);int sum = 0;while(!deque.isEmpty()){TreeNode node = deque.poll();if(node.left != null){//保证是左节点deque.offer(node.left);if(node.left.left == null && node.left.right == null){//保证是左叶子节点sum = sum + node.left.val;}}if(node.right != null){deque.offer(node.right);}}return sum;}
}
递归法:
class Solution {public int sumOfLeftLeaves(TreeNode root) {//递归法return getSum(root);}public int getSum(TreeNode node){int sum = 0;if(node == null) return 0;//单层递归逻辑if(node.left != null && node.left.left == null && node.left.right == null){sum = sum + node.left.val;}sum += getSum(node.left);sum += getSum(node.right);return sum;}
}
四、总结
1.迭代法注意判断是否为叶子节点;
2.递归法的单层逻辑;