zoukankan      html  css  js  c++  java
  • LeetCode404---Sum of Left Leaves

    Question:

    Find the sum of all left leaves in a given binary tree.

    Example:

    分析:题目很容易理解,求出树的所有左叶子节点的和,需要注意的是,必须是对左叶子节点求和,所以根节点,非叶子节点,右叶子节点都不符合条件

    解法一:递归

    注意:要弄清楚递归的出口

    public static int sumOfLeftLeaves(TreeNode root) {
            int sum = 0;
            if (root == null) {
                return 0;
            }
            if (root.left != null) {
                if (root.left.left == null && root.left.right == null) {
                    sum += root.left.val;
                }
            }
            sum += sumOfLeftLeaves(root.left);
            sum += sumOfLeftLeaves(root.right);
            return sum;
        }

    解法二:非递归,使用栈

    如果不想采用递归的方法的话,可以考虑使用栈,遍历所有的节点,找出复合条件的节点计算即可。贴上了leetcode上给出的别人写的代码参考一下作为学习

    public static int sumOfLeftLeaves(TreeNode1 root) {
          int sum = 0;
          Stack<TreeNode1> stack = new Stack<TreeNode1>();
          stack.push(root);
          
          while(!stack.empty()){
              TreeNode1 node1 = stack.pop();
              if(node1.left!=null){
                  if(node1.left.left == null && node1.left.right == null){
                      sum+=node1.left.val;
                  }else {
                      stack.push(root.left);
                }
              }
              if(node1.right!=null){
                  if(node1.right.left != null || node1.right.right != null){
                      stack.push(root.right);
                  }
              }
          }
          return sum;
        }
  • 相关阅读:
    机器学习---14
    机器学习---13
    机器学习--10
    机器学习--9
    机器学习--8
    机器学习--7
    机械学习--6
    大数据应用技术课程实践--选题与实践方案
    15.手写数字识别-小数据集
    14.深度学习-卷积
  • 原文地址:https://www.cnblogs.com/miaowu1314/p/6247709.html
Copyright © 2011-2022 走看看