我想读取一个保存节点之间关系的txt文件,实现一边读取一边构建邻接表,比如:
0 1
0 2
1 3
1 5
2 6
上面的数字代表节点编号,当读到0 2结束时构建0的邻接表,读到1 5结束时构建1的邻接表,等等,怎么实现?
java bufferreader读txt文件
答案:2 悬赏:10 手机版
解决时间 2021-04-11 20:00
- 提问者网友:遮云壑
- 2021-04-11 09:57
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-04-11 10:18
邻接表?二叉树吧?
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) throws ParseException {
BufferedReader br = null;
String filename = "aaa.txt";
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
String buf = null;
TreeNode root = null;
Map nodeMap = new HashMap();;
while (null != (buf = br.readLine())) {
root = putToTree(root, nodeMap, buf.split(" "));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
// ignore
}
}
}
private static TreeNode putToTree(TreeNode root, Map nodeMap, String[] data) {
if (data == null || data.length < 2) {
return root;
}
TreeNode nodeTmp = nodeMap.get(data[0]);;
if (nodeTmp == null) {
nodeTmp = new TreeNode(data[0]);
nodeMap.put(data[0], nodeTmp);
}
if (nodeTmp.getLeft() == null) {
nodeTmp.setLeft(new TreeNode(data[1]));
nodeMap.put(data[1], nodeTmp.getLeft());
} else if (nodeTmp.getRight() == null) {
nodeTmp.setRight(new TreeNode(data[1]));
nodeMap.put(data[1], nodeTmp.getRight());
} else {
System.out.println("重复");
}
if (root == null) {
root = nodeTmp;
}
return root;
}
}
class TreeNode {
private String data;
private TreeNode left = null;
private TreeNode right = null;
public TreeNode(String data) {
super();
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) throws ParseException {
BufferedReader br = null;
String filename = "aaa.txt";
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
String buf = null;
TreeNode root = null;
Map
while (null != (buf = br.readLine())) {
root = putToTree(root, nodeMap, buf.split(" "));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
// ignore
}
}
}
private static TreeNode putToTree(TreeNode root, Map
if (data == null || data.length < 2) {
return root;
}
TreeNode nodeTmp = nodeMap.get(data[0]);;
if (nodeTmp == null) {
nodeTmp = new TreeNode(data[0]);
nodeMap.put(data[0], nodeTmp);
}
if (nodeTmp.getLeft() == null) {
nodeTmp.setLeft(new TreeNode(data[1]));
nodeMap.put(data[1], nodeTmp.getLeft());
} else if (nodeTmp.getRight() == null) {
nodeTmp.setRight(new TreeNode(data[1]));
nodeMap.put(data[1], nodeTmp.getRight());
} else {
System.out.println("重复");
}
if (root == null) {
root = nodeTmp;
}
return root;
}
}
class TreeNode {
private String data;
private TreeNode left = null;
private TreeNode right = null;
public TreeNode(String data) {
super();
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}
全部回答
- 1楼网友:舍身薄凉客
- 2021-04-11 11:50
亲,请留下你的邮箱!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯