鱼C论坛

 找回密码
 立即注册
查看: 1407|回复: 0

[学习笔记] LeetCode(120):三角形最小路径和

[复制链接]
发表于 2019-7-27 23:55:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
LeetCode(120):三角形最小路径和
Medium!

题目描述:

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

例如,给定三角形:

[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]
自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。

  1. import java.util.ArrayList;
  2. import java.util.LinkedList;
  3. import java.util.List;

  4. public class main {

  5.     private int array[][] = {{-1},{2,3},{1,-1,-3}};

  6.     private static List<Node> tree = null;

  7.     private static int min = 100000;

  8.     private static int minNode = 100000;

  9.     private static class Node{

  10.         Node leftChild;

  11.         Node rightChild;

  12.         int data;

  13.         Node(int newData){

  14.             leftChild = null;

  15.             rightChild = null;

  16.             data = newData;

  17.         }
  18.     }

  19.     public void createTree(){

  20.         tree = new LinkedList<Node>();

  21.         for(int i = 0 ; i < array.length; i ++){

  22.             for(int j = 0; j < array[i].length ; j ++){

  23.                 tree.add(new Node(array[i][j]));
  24.             }

  25.         }

  26.         int index = 0;
  27.         for(int i = 0 ; i < array.length-1; i++){

  28.             for(int j = 0 ; j < array[i].length ; j++){
  29.                
  30.                 tree.get(index).leftChild = tree.get(index  + array[i].length);
  31.                 tree.get(index).rightChild = tree.get(index +1 + array[i].length);
  32.                 index ++ ;

  33.             }

  34.         }
  35.     }

  36.     public static void inorderTraverse(Node node){

  37.         if(node == null){

  38.             return;
  39.         }
  40.         
  41.         inorderTraverse(node.leftChild);
  42.         System.out.print(node.data + " ");
  43.         inorderTraverse(node.rightChild);
  44.         
  45.     }

  46.     public static void preorderTraverse(Node node){

  47.         if(node == null){

  48.             return;
  49.         }

  50.         System.out.print(node.data + " ");
  51.         preorderTraverse(node.leftChild);
  52.         preorderTraverse(node.rightChild);

  53.     }

  54.     public static void postorderTraverse(Node node){

  55.         if(node == null){

  56.             return;
  57.         }
  58.         
  59.         postorderTraverse(node.leftChild);
  60.         postorderTraverse(node.rightChild);
  61.         System.out.print(node.data + " ");
  62.     }

  63.     public static void dfs(Node node,int sum) {

  64.         if (node != null) {

  65.             if (node.rightChild == null && node.leftChild == null) {
  66.                
  67.                 if (sum + node.data < min || (sum + node.data == min && node.data < minNode)) {

  68.                     min = sum + node.data;
  69.                     minNode = node.data;

  70.                 }

  71.             }
  72.             dfs(node.leftChild, sum + node.data);
  73.             dfs(node.rightChild, sum + node.data);
  74.         }
  75.     }

  76.     public static void main(String[] args){

  77.         main test = new main();

  78.         test.createTree();

  79.         Node root = tree.get(0);
  80.         dfs(root,0);

  81.         System.out.println("minimum value!");

  82.         System.out.println(min);
  83.         System.out.println(minNode);
  84.         System.out.println(minNode);

  85.         System.out.println("in order traverse!");
  86.         inorderTraverse(root);
  87.         System.out.println();

  88.         System.out.println("pre order traverse!");
  89.         preorderTraverse(root);
  90.         System.out.println();

  91.         System.out.println("post order traverse!");
  92.         postorderTraverse(root);
  93.         System.out.println();
  94.     }
  95. }
复制代码


output:

  1. minimum value!
  2. -1
  3. -3
  4. in order traverse!
  5. 1 2 -1 -1 -1 3 -3
  6. pre order traverse!
  7. -1 2 1 -1 3 -1 -3
  8. post order traverse!
  9. 1 -1 2 -1 -3 3 -1
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 15:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表