面试题34:二叉树中和为某一值的路径

题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。

  • 思路:通过前序遍历树
  1. 如果当前节点不是叶节点,sum加上当前的值,继续遍历
  2. 如果当前节点是叶节点,sum加上当前的值,并判断是不是等于和,如果是,则输出,然后回到父节点。
import java.util.Stack;

public class FindSum {
    public void FindPathMain(TreeNode root,int expectedSum){
        if(root==null||expectedSum<=0) return;
        Stack<TreeNode> stack = new Stack<>();
        FindPath(root,expectedSum,stack,0);
    }
    public void FindPath(TreeNode root, int expectedSum, Stack stack,int currentSum){
        currentSum += root.val;
        stack.push(root);
        if(root.left==null&&root.right==null&& currentSum== expectedSum){
            System.out.println();
        }
        if(root.left!=null) FindPath(root.left,expectedSum,stack,currentSum);
        if(root.right!=null) FindPath(root.right,expectedSum,stack,currentSum);
        stack.pop();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容