这段时间时不时地会在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)

本文介绍了一种方法,通过数组快速构建用于LeetCode测试的二叉树。作者指出,这种方法可以避免频繁在本地IDE和LeetCode之间切换,提高做题效率。核心思路是利用层次遍历,用队列存储每层节点,并根据父节点数量的两倍遍历数组,创建子节点并连接。代码中使用Integer数组以处理可能存在的空节点。在实际应用中,还需考虑不完整数组的情况,确保程序能正确处理。
最低0.47元/天 解锁文章
5万+





