牛牛有一棵二叉树,其根节点为root。牛牛想要在该二叉树中找到两棵子树,他们是同构的,且这两棵子树的大小是最大的。子树的大小为其节点个数。两操列是同构表示为该两棵树结构是相同的,如
o o
/ \ / \
o o o o
/ /
o o
两棵树是同构的。
o o
/ \ / \
o o o o
/ \
o o
是不同构的。
现在牛牛给你这棵二叉树,请你返回两棵最大同构子树的大小。
思路:要求返回两棵最大同构子树的大小,相当于寻找重复子树中的最大子树。
方法一:使用递归对树进行前序遍历,得到其序列化的结果。通过判断该序列出现的次数来决定是否符合要求。最终返回节点个数最多的最大同构子树的大小。
方法二:方法一由于使用全递归,对于全左或全右的二叉树,当节点数很大时会出现超时的现象。——> 使用唯一标识符对过程进行简化,将字符串的操作简化;同时可以使用StringBuilder对字符串的连接操作进行优化,尽可能减小方法一中的超时问题。