zoukankan      html  css  js  c++  java
  • LeetCode——求根到叶子节点数字之和

    Q:给定一个仅包含数字0-9的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。
    例如根节点到叶子节点的一条路径是1->2->3,那么这条路径就用123来代替。
    找出根节点到叶子节点的所有路径表示的数字之和
    例如:
    1↵ / ↵ 2 3
    根节点到叶子节点的路径1->2用数字12代替
    根节点到叶子节点的路径1->3用数字13代替
    所以答案为12+13=25

    A:牵扯到树的一般就是递归。

        public static int sumNumbers(TreeNode root) {
            ArrayList<Integer> array = new ArrayList<>();
            if (root == null)
                return 0;
            int sum = root.val;
            if(root.left == null && root.right == null)//如果只有一个根节点
                array.add(sum);
            //如果根节点没有左右子树,就不是路径了
            if (root.left != null)
                dfs(array, sum, root.left);
            if (root.right != null)
                dfs(array, sum, root.right);
            int count = 0;
            for (Integer integer : array) {
                count += integer;
            }
            return count;
        }
    
        public static void dfs(ArrayList<Integer> array, int sum, TreeNode root) {
            if (root.left == null && root.right == null) {
                sum = sum * 10 + root.val;
                array.add(sum);
                return;
            }
            int temp = sum;//这里是避免在dfs left时改变sum
            if (root.left != null) {
                sum = sum * 10 + root.val;
                dfs(array, sum, root.left);
            }
            if (root.right != null) {
                temp = temp * 10 + root.val;
                dfs(array, temp, root.right);
            }
        }
    
  • 相关阅读:
    动态规划突破
    日志如何进行处理
    多线程相关问题
    Activity工作流框架
    修改模块
    spring多模块搭建Eureka服务器端
    springcould多模块搭建Eureka的服务器端口
    java操作elecsearch
    在elementui和MyBatis中前后端分离中使用shiro
    elementui的和前后端分离的微信登陆功能
  • 原文地址:https://www.cnblogs.com/xym4869/p/12488444.html
Copyright © 2011-2022 走看看