前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(null == p && null == q) return true;
else if(null != p && null != q){
if(p.val != q.val) return false;
if(isSameTree(p.right,q.right) == false) return false;
if(isSameTree(p.left,q.left) == false) return false;
return true;
}else return false;
}
}
总结:暂时想到的也只是递归的方式。
----------------更新于2016/10/14-----------------
现在看之前写的代码挺2的,服务器貌似好了,多次提交每次的rank基本不变了。Your runtime beats 18.94% of java submissions.
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p == null && q == null) return true;
if( p != null && q != null){
boolean flag = p.val == q.val;
if(flag) flag = isSameTree(p.left,q.left);
if(flag) flag = isSameTree(p.right,q.right);
return flag;
}
return false;
}
}