872. 叶子相似的树https://leetcode.cn/problems/leaf-similar-trees/
难度简单188
请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。
举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8)
的树。
如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。
如果给定的两个根结点分别为 root1
和 root2
的树是叶相似的,则返回 true
;否则返回 false
。
示例 1:
输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8] 输出:true
示例 2:
输入:root1 = [1,2,3], root2 = [1,3,2] 输出:false
提示:
- 给定的两棵树结点数在
[1, 200]
范围内 - 给定的两棵树上的值在
[0, 200]
范围内
通过次数65,726提交次数100,947
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<Integer> tree_1 = new ArrayList<Integer>();
List<Integer> tree_2 = new ArrayList<Integer>();
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
dfs(root1,tree_1);
dfs(root2,tree_2);
return handle();
}
void dfs(TreeNode node,List<Integer> tree)
{
if(node == null) return;
if(node.right==null && node.left==null) tree.add(node.val);
dfs(node.left,tree);
dfs(node.right,tree);
}
boolean handle()
{
if(tree_1.size() != tree_2.size()) return false;
for(int i=0;i<tree_1.size();i++)
{
if(tree_1.get(i)!=tree_2.get(i)) return false;
}
return true;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69068.html