g*l 发帖数: 385 | | l*****a 发帖数: 14598 | 2 digui
没啥别的好办法
【在 g*l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 有啥好办法. 树可以是 BST or BT
| g*l 发帖数: 385 | 3 具体咋递归的. 有 code 就容易明白了.
【在 l*****a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : digui : 没啥别的好办法
| g*********s 发帖数: 1782 | 4 is_subtree(x, y) ::= is_equal(x, y) || is_subtree(x, y.left) ||
is_subtree(x, y.right)
is_equal(x, y) ::= x.dat == y.dat && is_equal(x.left, y.left) &&
is_equal(x.right, y.right)
【在 g*l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 具体咋递归的. 有 code 就容易明白了.
| g*l 发帖数: 385 | 5 这个好想很不效率啊. 从根往下搜索. 我想能不能先在母树中找小书的根. 然后在看这
个子树和小树是不是
一样. 也就是说, 只要 call is_equal(x, y) once.
另外, 你这个 is_equal(x, y) 的 base case 是啥?
【在 g*********s 的大作中提到】![](/moin_static193/solenoid/img/up.png) : is_subtree(x, y) ::= is_equal(x, y) || is_subtree(x, y.left) || : is_subtree(x, y.right) : is_equal(x, y) ::= x.dat == y.dat && is_equal(x.left, y.left) && : is_equal(x.right, y.right)
| l*****a 发帖数: 14598 | 6 你找小树的根咋找?
如果BST还容易点
BT的话,不是得当前节点,左子节点,右子节点都判断吗?
有啥省事的办法吗
【在 g*l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这个好想很不效率啊. 从根往下搜索. 我想能不能先在母树中找小书的根. 然后在看这 : 个子树和小树是不是 : 一样. 也就是说, 只要 call is_equal(x, y) once. : 另外, 你这个 is_equal(x, y) 的 base case 是啥?
| z*s 发帖数: 209 | | l*****a 发帖数: 14598 | 8 当然要比较值
【在 z*s 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 只看树的形状,还是节点存的值也要比较?
| i**********e 发帖数: 1145 | |
|