2018年暑假Android实验室考核之算法题四——叶子相似的树

该博客介绍了如何解决2018年暑假Android实验室的一个算法问题,即判断两颗二叉树是否叶子相似。叶子相似的定义是两棵树的叶值序列相同。通过递归遍历树的叶子节点并对比它们的叶值序列来确定相似性。
摘要由CSDN通过智能技术生成

2018年暑假Android实验室考核之算法题四——叶子相似的树

题目

请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。

在这里插入图片描述

举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。

如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。

如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。

提示:

给定的两颗树可能会有 1 到 100 个结点。

解题

  • 语言:python
  • 思路:首先为我们将要比较的叶子建立空列表,然后开始写遍历树的叶子的函数。此函数用到了递归方法,注意要有一下这种情况!!!将两棵树的叶子列表遍历完毕进行对比即可。
if not tree:
   return
  • 代码:
class Solution:
    def leafSame(self,tree1,tree2):
        leaf = []
        def travel(tree):
            if not tree:
                return
            if not tree.left and not tree.right:
                leaf.append(tree.val)
            travel(tree.left)#递归求叶子节点,这样也可保证顺序
            travel(tree.right)
        travel(tree1)
        leaf2 = leaf
        leaf = []
        travel(tree2)
        return leaf == leaf2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值