最大路径之和

来源:互联网 发布:网络ip在哪里设置 编辑:程序博客网 时间:2024/04/29 14:10
public static void findMaxPath(Node node,Stack<Node> stack,List<Integer> list){if(node==null){return;}stack.push(node);boolean flag=node.leftChild==null&&node.rightChild==null;if(flag){int sum=0;for(Node n:stack){sum+=n.element;//计算出从每个叶子节点到跟的路径之和}list.add(sum);//保存每条路径之和}if(node.leftChild!=null){findMaxPath(node.leftChild,stack,list);}if(node.rightChild!=null){findMaxPath(node.rightChild,stack,list);}stack.pop();}

如果要求打印最大路径可以在形参列表把list换成Map<String,Integer>把路径作为key,路径上个结点的和作为value.

public static void findMaxPath2(Node node,Stack<Node> stack,Map<String,Integer> map){if(node==null)return;stack.add(node);if(node.leftChild==null&&node.rightChild==null){String path="";int sum=0;for(Node n:stack){path+=n.element+"->";  //每条路径名称sum+=n.element;   //路径上各节点之和}map.put(path,sum);//key:路径上各节点名称 value:各节点之和}if(node.leftChild!=null){findMaxPath2(node.leftChild,stack,map);}if(node.rightChild!=null){findMaxPath2(node.rightChild,stack,map);}stack.pop();}
最后只需将map中的键值打印输出即可。

0 0
原创粉丝点击