【发布时间】:2014-09-08 23:12:39
【问题描述】:
有一棵树,树定义为
public class TreeNode
{
int val;
vector<TreeNode *> children;
TreeNode(int x) { val = x; }
}
求最大公共子树(节点数最多,每个节点的val无所谓,只要子树的结构一样)
例如,
1
/ | \
2 3 4
/ / | \ / | \
5 6 7 8 9 10 11
根为 3 和 4 的子树是最大公共子树(注意,公共子树可能有两个以上的子树),
输出最大子树的根。
我认为蛮力方法不好,哈希呢,但我不知道如何哈希 树的结构。
【问题讨论】:
-
表示有根(子)树的一种方法是使用包含左括号和右括号的字符串。这应该足以让您入门。