zoukankan      html  css  js  c++  java
  • 二叉树中和为某为某一值的路径

    public class 二叉树中和为某为某一值的路径
    {
        // 使用回溯算法 递归实现,分析好终止条件
        public void findPath(TreeNode root, int expectedNum)
        {
            if (root == null)
            {
                return;
            }
            if (expectedNum <= 0)
            {
                return;
            }
            int currentNum = 0;
            Stack<Integer> path = null;
            findPathCore(root, currentNum, path, expectedNum);
        }

        void findPathCore(TreeNode root, int currentNum, Stack<Integer> path,
                int expectedNum)
        {
            // 保存当前节点
            path.add(root.value);
            // 变化当前值
            currentNum += root.value;
            // flag 是否为叶子节点
            boolean isLeaf = root.left == null && root.right == null;
            // 找到相关路径
            if (currentNum == expectedNum && isLeaf)
            {
                // 输出相关路径 使用Iterator
                Iterator<Integer> res = path.iterator();
                while (res.hasNext())
                {
                    System.out.print(res.next());
                }
                System.out.println();

            }
            if (root.left != null)
            {
                findPathCore(root.left, currentNum, path, expectedNum);
            }
            if (root.right != null)
            {
                findPathCore(root.right, currentNum, path, expectedNum);
            }
            // 如果不满足天剑 最关键删除当前节点 进行回溯
            path.pop();
        }

    }

  • 相关阅读:
    oracle 12c迁移数据及遇到的问题
    用最有效率的方法计算 2 乘以 8?
    Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
    是否可以在 static 环境中访问非 static 变量?
    什么是值传递和引用传递?
    Java 支持的数据类型有哪些?
    JDK、JRE、JVM 分别是什么关系?
    idea设置方法注释
    Java中&和&&的区别
    int和Integer有什么区别?
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/8258261.html
Copyright © 2011-2022 走看看