[贝壳找房] 0813笔试 4

题目要求找到一棵二叉树中最大同构的子树对,即结构相同的子树且大小最大。给出了两种解题思路:一是递归前序遍历获取序列化结果并比较;二是优化方法以减少超时问题,使用唯一标识符简化操作。
摘要由CSDN通过智能技术生成

        牛牛有一棵二叉树,其根节点为root。牛牛想要在该二叉树中找到两棵子树,他们是同构的,且这两棵子树的大小是最大的。子树的大小为其节点个数。两操列是同构表示为该两棵树结构是相同的,如

        o            o
       / \          / \
      o   o        o   o
     /            /
    o            o

两棵树是同构的。

        o            o
       / \          / \
      o   o        o   o
     /              \
    o                o

是不同构的。

现在牛牛给你这棵二叉树,请你返回两棵最大同构子树的大小。


思路:要求返回两棵最大同构子树的大小,相当于寻找重复子树中的最大子树

方法一:使用递归对树进行前序遍历,得到其序列化的结果。通过判断该序列出现的次数来决定是否符合要求。最终返回节点个数最多的最大同构子树的大小。

方法二:方法一由于使用全递归,对于全左或全右的二叉树,当节点数很大时会出现超时的现象。——> 使用唯一标识符对过程进行简化,将字符串的操作简化;同时可以使用StringBuilder对字符串的连接操作进行优化,尽可能减小方法一中的超时问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值