LeetCode 相同的树

版权声明:欢迎提问:[email protected] https://blog.csdn.net/include_heqile/article/details/81984114

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;
    }
}

猜你喜欢

转载自blog.csdn.net/include_heqile/article/details/81984114