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