题解 | #相逆叶子#
相逆叶子
https://www.nowcoder.com/practice/41c7b0e8710e43ca9f328bf06ea2aff3
题目考察的知识点是:
本题主要考察二叉树,遍历知识。
题目解答方法的文字分析:
将二叉树的叶子结点遍历出来,放入数组当中,先比较两个数组的长度,长度相同再继续比较两个数组的对应的值,如果依次相同则为true,不同为false。
本题解析所用的编程语言:
java语言。
完整且正确的编程代码:
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root1 TreeNode类 * @param root2 TreeNode类 * @return bool布尔型 */ public boolean leafSimilar (TreeNode root1, TreeNode root2) { // write code here if (root1 == null && root2 == null) return true; ArrayList<Integer> arrayList1 = levelOrder(root1); ArrayList<Integer> arrayList2 = levelOrder(root2); if (arrayList1.size() != arrayList2.size()) { return false; } else { for (int i = 0; i < arrayList1.size(); i++) { if (arrayList1.get(i) != arrayList2.get(arrayList1.size() - i - 1)) return false; } return true; } } public static ArrayList<Integer> levelOrder(TreeNode root) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); ArrayList<Integer> arrayList = new ArrayList<>(); queue.add(root); while (!queue.isEmpty()) { TreeNode q = queue.remove(); if (q.left == null && q.right == null) { arrayList.add(q.val); } if (q.left != null) { queue.add(q.left); } if (q.right != null) { queue.add(q.right); } } return arrayList; } }#题解#