美文网首页
leetcode--100--相同的树

leetcode--100--相同的树

作者: minningl | 来源:发表于2020-09-20 12:39 被阅读0次

    题目:
    给定两个二叉树,编写一个函数来检验它们是否相同。

    如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

    示例 1:

    
    输入:       1         1
              / \       / \
             2   3     2   3
    
            [1,2,3],   [1,2,3]
    
    输出: true
    

    示例 2:

    输入:      1          1
              /           \
             2             2
    
            [1,2],     [1,null,2]
    
    输出: false
    

    示例 3:

    输入:       1         1
              / \       / \
             2   1     1   2
    
            [1,2,1],   [1,1,2]
    
    输出: false
    

    链接:https://leetcode-cn.com/problems/same-tree

    思路:
    1、递归的遍历树,如果节点值相同,则继续遍历左右子点,直至所有节点均相同

    Python代码:

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution(object):
        def isSameTree(self, p, q):
            """
            :type p: TreeNode
            :type q: TreeNode
            :rtype: bool
            """
            if not p and not q:
                return True
            if not p or not q:
                return False
            if p.val!=q.val:
                return False
                
            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
            
    

    C++代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        bool isSameTree(TreeNode* p, TreeNode* q) {
            if (p==nullptr && q==nullptr) return true;
            if (p==nullptr || q==nullptr) return false;
            if (p->val != q->val) return false;
    
            return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
        }
    };
    

    相关文章

      网友评论

          本文标题:leetcode--100--相同的树

          本文链接:https://www.haomeiwen.com/subject/fzwuyktx.html