zoukankan      html  css  js  c++  java
  • 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径

    题目:

    输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
    从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

    解答:

     1 import java.util.*;
     2 
     3 public class Solution {
     4     public static void main(String[] args) {
     5         BinaryTreeNode root=new BinaryTreeNode(10);
     6         BinaryTreeNode node1=new BinaryTreeNode(5);
     7         BinaryTreeNode node2=new BinaryTreeNode(4);
     8         BinaryTreeNode node3=new BinaryTreeNode(7);
     9         BinaryTreeNode node4=new BinaryTreeNode(12);
    10         root.setLchildNode(node1);root.setRchildNode(node4);
    11         node1.setLchildNode(node2);node1.setRchildNode(node3);
    12         findPath(root,22);
    13     }
    14 
    15     private static void findPath(BinaryTreeNode root, int i) {
    16         if(root == null) {
    17             return;
    18         }
    19 
    20         Stack<Integer> stack  = new Stack<Integer>();
    21         int currentSum = 0;
    22         findPath(root, i, stack, currentSum);
    23     }
    24 
    25     private static void findPath(BinaryTreeNode root, int i, Stack<Integer> stack, int currentSum) {
    26         currentSum = currentSum + root.getData();
    27         stack.push(root.getData());
    28 
    29         if(root.getLchildNode() == null && root.getRchildNode() == null) {
    30             if(currentSum == i) {
    31                 System.out.println("find path");
    32                 for(int path:stack) {
    33                     System.out.println(path + " ");
    34                 }
    35             }
    36         }
    37 
    38         if(root.getLchildNode() != null) {
    39             findPath(root.getLchildNode(), i, stack, currentSum);
    40         }
    41 
    42         if(root.getRchildNode() != null) {
    43             findPath(root.getRchildNode(), i, stack, currentSum);
    44         }
    45 
    46         stack.pop();
    47     }
    48 }
  • 相关阅读:
    《财富自由之路》读后感及读书笔记
    echarts3.x 入门
    Ubuntu 16.04 硬盘安装
    语义化版本控制的规范(转载)
    appcan IDE 无法 请求数据
    jQuery extend 函数
    63342 接口 奇遇 IDEA
    C++调用Java的Jar包
    无法打开 源 文件“stdafx.h”的解决方法
    CString的头文件
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10369175.html
Copyright © 2011-2022 走看看