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;
        }
  • 相关阅读:
    linux下的内存映射函数mmap详解及示例代码
    Android平台上使用属性系统(property system)
    Android筆記
    Android Prelink
    DataGridView BindingSource BindNavigator
    可排序的ListView
    开源2D绘图组件ZedGraph
    BackgroundWorker示例
    级联datagridview 利用datarelation和bindingsource
    继承DataGridView
  • 原文地址:https://www.cnblogs.com/miaowu1314/p/6247709.html
Copyright © 2011-2022 走看看