ツリーの各パスを取得して保存
1900 ワード
import java.util.ArrayList;
import java.util.List;
/**
* 1
* / \
* 2 3
* /\
* 5 6
* List [1 2 5] [1,2,6] [ 1 3]
*
*/
public class BinaryTreePaths257 {
public List binaryTreePaths(TreeNode root) {
List answer = new ArrayList();
if (root != null) searchBT(root, "", answer);
return answer;
}
private void searchBT(TreeNode root, String path, List answer) {
if (root.left == null && root.right == null) answer.add(path + root.val);
if (root.left != null) searchBT(root.left, path + root.val + "-", answer);
if (root.right != null) searchBT(root.right, path + root.val + "-", answer);
}
private List> getList(List list) {
if (list == null) return null;
List> result = new ArrayList();
for (String s : list) {
List list1 = new ArrayList();
for (int k = 0; k < s.length(); k++) {
if (s.charAt(k) != '-') {
list1.add(s.charAt(k) - '1' + 1);
}
}
result.add(list1);
}
return result;
}
public static void main(String[] args) {
TreeNode treeNode4=new TreeNode(6,null,null);
TreeNode treeNode3 = new TreeNode(5, null, null);
TreeNode treeNode2 = new TreeNode(3, null, null);
TreeNode treeNode1 = new TreeNode(2, treeNode3, treeNode4);
TreeNode treeNode = new TreeNode(1, treeNode1, treeNode2);
BinaryTreePaths257 m = new BinaryTreePaths257();
for (String s : m.binaryTreePaths(treeNode)) {
System.out.println(s);
}
m.getList(m.binaryTreePaths(treeNode));
}
}