872. 叶子相似的树
请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。
举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8)
的树。
如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。
如果给定的两个头结点分别为 root1
和 root2
的树是叶相似的,则返回 true
;否则返回 false
。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
if(getSeq(root1).equals(getSeq(root2)))
return true;
return false;
}
public List<Integer>getSeq(TreeNode root)
{
List<Integer>list=new ArrayList<Integer>();
Stack <TreeNode>s=new Stack<TreeNode>();
while(root!=null||!s.isEmpty())
{
while(root!=null)
{
s.push(root);
root=root.left;
}
TreeNode t=s.pop();
if(t.left==null&&t.right==null)
list.add(t.val);
else
root=t.right;
}
return list;
}
}