原理很简单,二叉树内最大的路径的起点和终点一定是叶子。据此可以遍历所有的叶子进行暴力求解(好好的分治法能解决的问题被我弄成这样)
二叉树的节点定义如下:
package cn.edu.nju.zyf.longestPathWithinABinaryTree;
public class Node {
private String data;
public Node parent;
public Node leftChild;
public Node rightChild;
public Node() {
}
public Node(String str) {
this.data = str;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
辅助类(中的数据在初始化的时候搞定)
package cn.edu.nju.zyf.longestPathWithinABinaryTree;
import java.util.ArrayList;
import java.util.List;
public class LongestPathWithinABinaryTreeUtil {
private Node root;
private List<Node> leaves = new ArrayList<Node>();
private List<ArrayList<Node>> pathsFromLeafToRoot = new ArrayList<ArrayList<Node>>();
private i