题目链接这里
这个题让我知道纸上的东西有假的。之前讲课和复习考研的时候知道。判断两个树是不是相同要用前序和中序遍历方法就能得出。而今天这个题目我发现这句话有漏洞
[1,1], [1,null,1]
Output: true
Expected: false
如果是这个输入案例,仅仅这么判断不行。在遍历的时候如果碰上null要在遍历的输出里面做标志才行。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private StringBuilder qianArray;
private StringBuilder zhongArray;
public boolean isSameTree(TreeNode p, TreeNode q) {
qianArray=new StringBuilder();
zhongArray=new StringBuilder();
qianTravel(p);
zhongTravel(p);
String pqian=qianArray.toString();
String pzhong=zhongArray.toString();
qianArray=new StringBuilder();
zhongArray=new StringBuilder();
qianTravel(q);
zhongTravel(q);
String qqian=qianArray.toString();
String qzhong=zhongArray.toString();
if(pqian.equals(qqian)&&pzhong.equals(qzhong))
{
return true;
}
else
{
return false;
}
}
void qianTravel(TreeNode tree)
{
if(tree==null)
{
qianArray.append("#");
return;
}
qianArray.append(tree.val);
qianTravel(tree.left);
qianTravel(tree.right);
}
void zhongTravel(TreeNode tree)
{
if(tree==null)
{
qianArray.append("#");
return;
}
zhongTravel(tree.left);
zhongArray.append(tree.val);
zhongTravel(tree.right);
}
}