码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-03-13 15:13:18      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:iss   example   lan   ted   否则   init   ssi   node   注意   

/*
 * @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]\n[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)

 

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

标签:iss   example   lan   ted   否则   init   ssi   node   注意   

原文地址:https://www.cnblogs.com/lixiaoyao123/p/10523101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!