题目解析
本题说输入的二叉树层数小于5。因此二叉树节点数至多15个。数量级不大,可以考虑暴力破解。
最简单的解题思路就是,以每个节点为根,求对应根的子树的层序遍历序列。
然后将这些序列(如:"[2,1,null]")都记录到哈希表中,如果某些序列已经出现过,则为相同子树。
我们也可以做一些优化,比如:
- 输入数组的索引0节点为根的子树不会存在相同子树,因此我们可以跳过索引0。
- 题目说:子树层数必须大于等于2,即对于叶子节点(左右子节点都为null的)可以跳过。
JS算法源码
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
const tree = eval(