自己研究的一种创建树比较简便且容易理解的方法,平时刷题如果需要创建树,该方法也是很快捷的。
import java.util.*;
class TreeNode {
int val;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class Test {
/**
* 1
* 2 3
* 4 # 5 6
* 7 8 # # # # # #
* 9
*
* 1
* 1 1
* 1 # # 1
* # 1 # # # # # 1
*/
private String[] treeValue = {
"1",
"1", "1",
"1", "#", "#", "1",
"#", "1", "#", "#", "#", "#", "#", "1"
};
// 层序遍历思路
public TreeNode buildTree() {
LinkedList<TreeNode> queue = new LinkedList<>();
TreeNode head = new TreeNode(Integer.parseInt(treeValue[0]));
queue.offer(head);
for(int i = 1; i <= treeValue.length; i = i + 2) {
TreeNode node = queue.poll();
if(node == null) {
continue;
}
if(i < treeValue.length && !"#".equals(treeValue[i])) {
node.left = new TreeNode(Integer.parseInt(treeValue[i]));
queue.offer(node.left);
} else {
queue.offer(null);
}
if(i + 1 < treeValue.length && !"#".equals(treeValue[i + 1])) {
node.right = new TreeNode(Integer.parseInt(treeValue[i + 1]));
queue.offer(node.right);
} else {
queue.offer(null);
}
}
return head;
}
public static void main(String[] args) {
Test test = new Test();
TreeNode head = test.buildTree();
}
}