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是否同!

  • 相关阅读:
    C++中析构函数为什么要是虚函数
    依赖注入(IOC)
    ParseInt()与NaN()
    仿windows关机效果
    类似Tab的效果
    飞来飞去的广告
    Sql Server 三种连接
    JS日期处理
    绚丽的注册效果
    JS图片自动切换
  • 原文地址:https://www.cnblogs.com/bonelee/p/8660868.html
Copyright © 2011-2022 走看看