赞
踩
相同的树简单
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例1:
输入:p = [1,2,3], q = [1,2,3]
输出:true
示例2:
输入:p = [1,2], q = [1,null,2]
输出:false
示例3:
输入:p = [1,2,1], q = [1,1,2]
输出:false
提示:
dfs同时遍历两棵树的左右节点,一定要同时左或同时右
/** * 二叉树的定义 * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if(p == null && q == null){ return true; }else if(p == null || q == null){ //一方为空一方不为空,执行else if语句,return false;双方都不为空,不执行else if语句; //注意||用法,有真则真,无真则假 return false; }else if(p.val != q.val){ return false; }else{ return isSameTree(p.left,q.left) && isSameTree(p.right,q.right); } } }
时间复杂度:O(min(m,n)),其中 m 和 n 分别是两个二叉树的节点数。对两个二叉树同时进行深度优先搜索,只有当两个二叉树中的对应节点都不为空时才会访问到该节点,因此被访问到的节点数不会超过较小的二叉树的节点数。
空间复杂度:O(min(m,n)),其中 m 和 n 分别是两个二叉树的节点数。空间复杂度取决于递归调用的层数,递归调用的层数不会超过较小的二叉树的最大高度,最坏情况下,二叉树的高度等于节点数。
递归时一定要左右同时递归并且做 ‘与’ 运算
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。