左叶子节点:首先他是一个节点的左子节点,其次他是叶子节点。
这就说明了左叶子节点的个数不只有一个。
深度优先遍历二叉树
public static int sumOfLeaves(TreeNode root){
return root==null?0:dfs(root);
}
public static int dfs(TreeNode node){
int ans = 0;
if(node.left!=0){
ans+=isLeftNode(node.left)?node.left.val:dfs(node.left);
}
if(node.right!=null&&!ifleftNode(node.right)){
ans+=dfs(node,right);
}
}
public static boolean isLeftNode(TreeNode node){
return node.left==null&&ndoe.right==null;
}
public int bfs(TreeNode root) {
if(root == null) {
return 0;
}
if(isLeaf(root)) {
return 0;
}
int ans = 0;
Deque<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while(!queue.isEmpty()) {
TreeNode cur = queue.pop();
if(cur.left!=null) {
if(isLeaf(cur.left)) {
ans+=cur.left.val;
}else {
queue.add(cur.left);
}
}
if(cur.right!=null) {
if(!isLeaf(cur.right)) {
queue.add(cur.right);
}
}
}
return ans;
}