zoukankan      html  css  js  c++  java
  • leetcode 100. Same Tree

    Given two binary trees, write a function to check if they are the same or not.

    Two binary trees are considered the same if they are structurally identical and the nodes have the same value.

    Example 1:

    Input:     1         1
              /        / 
             2   3     2   3
    
            [1,2,3],   [1,2,3]
    
    Output: true
    

    Example 2:

    Input:     1         1
              /           
             2             2
    
            [1,2],     [1,null,2]
    
    Output: false
    

    Example 3:

    Input:     1         1
              /        / 
             2   1     1   2
    
            [1,2,1],   [1,1,2]
    
    Output: false
    

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def isSameTree(self, p, q):
            """
            :type p: TreeNode
            :type q: TreeNode
            :rtype: bool
            """
            # DFS
            if p and q:
                return p.val == q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
            else:
                return p == q                                

     迭代解法:

    public boolean isSameTree(TreeNode p, TreeNode q) {
             Stack<TreeNode> stack_p = new Stack <> ();       
             Stack<TreeNode> stack_q = new Stack <> ();
             if (p != null) stack_p.push( p ) ;
             if (q != null) stack_q.push( q ) ;
             while (!stack_p.isEmpty() && !stack_q.isEmpty()) {
                 TreeNode pn = stack_p.pop() ;
                 TreeNode qn = stack_q.pop() ;            
                 if (pn.val != qn.val) return false ;
                 if (pn.right != null) stack_p.push(pn.right) ;
                 if (qn.right != null) stack_q.push(qn.right) ;
                 if (stack_p.size() != stack_q.size()) return false ;
                 if (pn.left != null) stack_p.push(pn.left) ;                          
                 if (qn.left != null) stack_q.push(qn.left) ;
                 if (stack_p.size() != stack_q.size()) return false ;
             }             
             return stack_p.size() == stack_q.size() ;     
         }

    判断size是否同!

  • 相关阅读:
    Java中的日期(Calendar、Date)
    java上传、下载、删除ftp文件
    JAVA中使用FTPClient实现文件上传下载
    使用JSch实现SFTP文件传输
    linux 如何显示一个文件的某几行(中间几行)
    java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等
    String与InputStream互转的几种方法
    day 13
    day 12
    day11 大纲
  • 原文地址:https://www.cnblogs.com/bonelee/p/8660868.html
Copyright © 2011-2022 走看看