这段时间时不时地会在leetcode上做些题,最近做到的大部分是与树相关的题。由于是在本地的IDE上码代码,如果每次测试都要到leetcode上来测的话,不仅要选中复制粘贴一遍,而且每次测试还要读一会条,一次两次还好,次数多了还是比较烦。而如果在本地的类内的main()
函数里测试的话,每次构建一个树也比较麻烦,而且仅仅更换数值还好,若要更换树的结构,那工程量就有点大了。
所以在这里准备写一个创建树的函数来解决这个问题,后面做起题来效率也能高一些。
话不多说,下面先直接放上所用的代码:
本例中所构建的树的结构
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
package learning_java;
import LeetCode.TreeNode;
import java.util.Deque;
import java.util.LinkedList;
public class ConstructTree {
public static TreeNode constructTree(Integer[] nums){
if (nums.length == 0) return new TreeNode(0);
Deque<TreeNode> nodeQueue = new LinkedList<>();
// 创建一个根节点
TreeNode root = new TreeNode(nums[0]);
nodeQueue.offer(root);
TreeNode cur;
// 记录当前行节点的数量(注意不一定是2的幂,而是上一行中非空节点的数量乘2)