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);
            }
        }
    
  • 相关阅读:
    跟风!发一篇我常用VS开发技巧
    引用:程序员最常犯的五大非技术性错误
    Introduction to the Oracle Database 3
    Oracle Database 12c 12大新特性详解
    Streams全库复制
    Introduction to the Oracle Database 2
    Oracle FlashBack
    Oracle Database Features 2
    Oracle Database Features
    TNSName配置小结
  • 原文地址:https://www.cnblogs.com/xym4869/p/12488444.html
Copyright © 2011-2022 走看看