• Leecode刷题之旅-C语言/python-100相同的树


    /*
     * @lc app=leetcode.cn id=100 lang=c
     *
     * [100] 相同的树
     *
     * https://leetcode-cn.com/problems/same-tree/description/
     *
     * algorithms
     * Easy (51.47%)
     * Total Accepted:    16K
     * Total Submissions: 31K
     * Testcase Example:  '[1,2,3]
    [1,2,3]'
     *
     * 给定两个二叉树,编写一个函数来检验它们是否相同。
     * 
     * 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
     * 
     * 示例 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
     * 
     * 
     */
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     struct TreeNode *left;
     *     struct TreeNode *right;
     * };
     */
    bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
        if(p == NULL && q == NULL) return true;
        if(p != NULL && q != NULL){
            if(p -> val != q -> val) return false;        
            else{            
                return (isSameTree(p -> left, q -> left) && isSameTree(p -> right, q -> right)); 
                    }    
                }    
        else   return false;
    }

    一般来说对树的操作,用递归法比较简单,第一个判断是否都为空,当都不为空的情况下判断值是否相等。不相等返回false。相等的话,进行递归,只有当左孩子和右孩子都满足条件的时候返回true,否则就是false了。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    python:

    # Definition for a binary tree node.
    
    # class TreeNode:
    
    #     def __init__(self, x):
    
    #         self.val = x
    
    #         self.left = None
    
    #         self.right = None
    
    class Solution:
        def isSameTree(self, p, q):
    
            """
    
            :type p: TreeNode
    
            :type q: TreeNode
    
            :rtype: bool
    
            """
            def issamenode(a,b):
    
                if a==None and b==None: return True
    
                if (a and b) == None: return False    #注意加括号
    
                if a.val !=b.val:
    
                    return False
    
                return issamenode(a.left,b.left) and issamenode(a.right,b.right)
    
            return issamenode(p,q)
  • 相关阅读:
    服务器重启
    aliyun修复漏洞之后,重启php-fpm命令
    数据结构和算法绪论(一)
    微信小程序+微信公众号开发总结
    数字校园项目-学生失联预警系统(三)----数据库设计
    数字校园项目-学生失联预警系统(二)-----项目部署
    数字校园项目-学生失联预警系统(一)
    gdut极路由破解教程
    项目:JavaWeb聊天室(问题汇总)
    项目:点餐系统(问题汇总)
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10523101.html
Copyright © 2020-2023  润新知