package cn.lastwhisper.leetcode.binarytree.相同的树_100_简单; import cn.lastwhisper.leetcode.common.tree.TreeNode; import java.util.LinkedList; import static cn.lastwhisper.leetcode.common.tree.TreeUtil.createTree; class Solution6 { /** * 题目地址:https://leetcode-cn.com/problems/same-tree/ * ------------------------------------------------------------------- * 思考: * ------------------------------------------------------------------- * 思路:层次遍历-迭代 * 使用1个队列同时遍历两颗树 * ------------------------------------------------------------------- * 时间复杂度: * 空间复杂度: */ public boolean isSameTree(TreeNode p, TreeNode q) { LinkedList<TreeNode> queue = new LinkedList<>(); queue.add(p); queue.add(q); while (!queue.isEmpty()) { p = queue.poll(); q = queue.poll(); if (p == null && q == null) continue; if (p == null || q == null) return false; if (p.val != q.val) return false; queue.add(p.left); queue.add(q.left); queue.add(p.right); queue.add(q.right); } return true; } public static void main(String[] args) { System.out.println(new Solution6().isSameTree(createTree(1, 2, 3), createTree(1, 2, 3)));//true System.out.println(new Solution6().isSameTree(createTree(1, 2), createTree(1, null, 2)));//false System.out.println(new Solution6().isSameTree(createTree(1, 2, 1), createTree(1, 1, 2)));//false } }