ツリーの各パスを取得して保存

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));

    }
}