2021-05-10 力扣每日一题
2021/5/10 10:25:36
本文主要是介绍2021-05-10 力扣每日一题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
872 叶子相似的树
问题描述:
请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。
举个例子,如上图所示,给定一棵叶值序列为 (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], root2 = [1] 输出:true
示例3:
输入:root1 = [1], root2 = [2] 输出:false
示例4:
输入:root1 = [1,2], root2 = [2,2] 输出:true
示例5:
输入:root1 = [1,2,3], root2 = [1,3,2] 输出:false
思路:
【广搜】
图嘛,深搜广搜,遍历就可以了。这里我们采用深搜。非递归实现。代码一看就懂的那种。
解释:
我们如何求其叶子节点,叶子节点就是左子树也右子树都是null的节点。那我们在遍历的时候,将所有左子树和右子树为null的节点记录下来就可以了。那么保存在哪里呢?这里选择将其保存在一个列表中,因为在Java中,列表的大小是可变的,如果使用数组的话,就需要事先知道它有多少个叶子才行,所以这里使用列表是一个很好的选择。
Java代码:
/** * @Description: 非递归题解 * @return: 返回结果 * @Author: Mr.Gao * @Date: 2021/5/10 */ public boolean leafSimilar2(TreeNode root1, TreeNode root2) { Stack<TreeNode> stack1 = new Stack<>(); Stack<TreeNode> stack2 = new Stack<>(); List<Integer> list1 = new ArrayList<>(); List<Integer> list2 = new ArrayList<>(); if(root1!=null){ stack1.push(root1); } if(root2!=null){ stack2.push(root2); } while(!stack1.empty()){ TreeNode temp = stack1.pop(); if(temp.left==null&&temp.right==null){ list1.add(temp.val); }else{ if(temp.left!=null){ stack1.push(temp.left); } if(temp.right!=null){ stack1.push(temp.right); } } } while(!stack2.empty()){ TreeNode temp = stack2.pop(); if(temp.left==null&&temp.right==null){ list2.add(temp.val); }else{ if(temp.left!=null){ stack2.push(temp.left); } if(temp.right!=null){ stack2.push(temp.right); } } } return list1.equals(list2); }
这篇关于2021-05-10 力扣每日一题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略