LeetCode(15)叶子相似的树(简单)

问题描述:

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

 

 

 

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/leaf-similar-trees
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码 :

class Solution {
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
List<Integer> seq1 = new ArrayList<Integer>();
if (root1 != null) {
dfs(root1, seq1);
}

List<Integer> seq2 = new ArrayList<Integer>();
if (root2 != null) {
dfs(root2, seq2);
}

return seq1.equals(seq2);
}

public void dfs(TreeNode node, List<Integer> seq) {
if (node.left == null && node.right == null) {
seq.add(node.val);
} else {
if (node.left != null) {
dfs(node.left, seq);
}
if (node.right != null) {
dfs(node.right, seq);
}
}
}
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/leaf-similar-trees/solution/xie-zi-xiang-si-de-shu-by-leetcode-solut-z0w6/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

解析 :

本题需要比较两棵叶值序列是否相等 使用深度搜索dfs算法获取他们的叶值序列

dfs算法被这样定义 从根节点开始 从左子树开始如果找到叶子节点(左右都为空)就放在list中

如果只有一个子树为空就在找另一颗子树查找 。

 

posted @ 2021-05-17 21:15  ash98  阅读(35)  评论(0)    收藏  举报