public boolean isSameTree(TreeNode p, TreeNode q) {
判断两棵树是否相同
参数为两棵树的根节点
方法一 递归
- 如果p q 都为null
- 返回true
- 如果p q 一个为null
- 返回false
- (剩下的是p q都不为null的情况)
- 对比 p q的值
- 如果值不相等
- 返回false
- 如果值相等
- 返回 左子树的对比 和 右子树的对比
方法二 迭代
- check方法
- 如果p q 都为null
- 返回true
- 如果p q 一个为null
- 返回false
- (剩下的是p q都不为null的情况)
- 对比 p q的值
- 如果值不相等
- 返回false
- 如果值相等
- 返回 true
- 如果p q 都为null
- 方法
- 如果p q 都为null
- 返回true
- 如果check(p,q)为false
- 返回 false
- 建立两个双端队列ArrayDeque
- 将p q 加在两个队列尾端
- 如果队列1不为空
- p q为删除首个节点
- 如果check(p,q)为false
- 返回 false
- 如果p不为null
- 如果check(p.left, q.left)为false
- 返回 false
- 如果p left不为空
- 将p left 和 q left 的加入对列
- 如果check(p.right, q.right)为false
- 返回 false
- 如果p right不为空
- 将p right和 q right的加入对列
- 如果check(p.left, q.left)为false
- 返回 true