https://leetcode-cn.com/problems/same-tree/description/

我的解决方案:

class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

public class Solution {
public static String treeToArray(TreeNode tree, String array) {
if(tree==null) {
array+="null";
return array;
}
array+= Integer.toString(tree.val);
array=treeToArray(tree.left, array);
array=treeToArray(tree.right, array);
return array;
}
public static boolean isSameTree(TreeNode p, TreeNode q) {
//中序遍历
//对于空节点,记为-1,但是测试数据中有负数,因此我改变了解决方案
//使用String类型进行记录
//由于递归的特点,我们需要返回array(String类型)来保证它的更改生效
if(p==null||q==null)
return p==q?true:false;
String pArray = null;
pArray=treeToArray(p, pArray);
String qArray = null;
qArray=treeToArray(q, qArray);
int i=0;
if(pArray.length()!=qArray.length())
return false;
for(i=0;i<pArray.length();i++)
if(pArray.charAt(i)!=qArray.charAt(i))
return false;
return true;
}
public static void main(String[] args) {
TreeNode FtreeNode = new TreeNode(0);
FtreeNode.left=new TreeNode(-5);
TreeNode StreeNode = new TreeNode(0);
StreeNode.left=new TreeNode(-8);
isSameTree(FtreeNode, StreeNode);
}
}

最佳解决方案:参考耗时最短代码

class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null||q==null) {
return p==q?true:false;
}
if(p.val==q.val){
//递归自身即可,我想的太复杂了
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
return false;
}
}