zoukankan      html  css  js  c++  java
  • 算法练习之相同的树,对称二叉树

    1.相同的树

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

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

    示例 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

    java

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public boolean isSameTree(TreeNode p, TreeNode q) {
            
            if(p==null && q==null) return true;
            if(p==null || q==null) return false;
            if(p.val==q.val && isSameTree(p.left, q.left)&&isSameTree(p.right, q.right)) return true;
            return false;
        }
    }

    php

    /**
     * Definition for a binary tree node.
     * class TreeNode {
     *     public $val = null;
     *     public $left = null;
     *     public $right = null;
     *     function __construct($value) { $this->val = $value; }
     * }
     */
    class Solution {
    
        /**
         * @param TreeNode $p
         * @param TreeNode $q
         * @return Boolean
         */
        function isSameTree($p, $q) {
            if($p==null&&$q==null) return true;
            if($p==null||$q==null) return false;
            if($p->val==$q->val&&($this->isSameTree($p->left, $q->left))&&($this->isSameTree($p->right, $q->right))) return true;
            return false;
        }
    }

    2.对称二叉树

    给定一个二叉树,检查它是否是镜像对称的。

    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
    
        1
       / 
      2   2
     /  / 
    3  4 4  3
    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
    
        1
       / 
      2   2
          
       3    3

    java

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public boolean isSymmetric(TreeNode root) {
            return isMirror(root,root);
        }
        public boolean isMirror(TreeNode p,TreeNode q){
            if(p==null && q==null) return true;
            if(p==null|q==null) return false;
            if(p.val==q.val){
                return isMirror( p.lef, q.right )&&isMirror( p.right, q.left);
            }
            return false;
        }
    }

    php

    /**
     * Definition for a binary tree node.
     * class TreeNode {
     *     public $val = null;
     *     public $left = null;
     *     public $right = null;
     *     function __construct($value) { $this->val = $value; }
     * }
     */
    class Solution {
    
        /**
         * @param TreeNode $root
         * @return Boolean
         */
        function isSymmetric($root) {
            return $this->ismirror($root,$root);
        }
        
        function ismirror($p,$q){
            if($p==null&&$q==null) return true;
            if($p==null||$q==null) return false;
            if($p->val==$q->val){
                return $this->ismirror($p->left,$q->right)&&$this->ismirror($p->right,$q->left);
            }
            return false;
        }
    }
  • 相关阅读:
    HTTP Status 404
    The error occurred while setting parameters--索引 3 超出范围 sqlserver2008
    hessian不能注入dao的问题解决
    怎么 才能显示Eclipse中Console的全部内容
    java mvc web 项目web.xml头改错了,死活加载不上springMvc的jar
    如何理解andriod中的View和framelayout两个概念
    Type Project has no default.properties file! Edit the project properties to set one.
    shell获取目录下(包括子目录)所有文件名、路径、文件大小
    找出1小时内占用cpu最多的10个进程的shell脚本
    awk统计命令(求和、求平均、求最大值、求最小值)
  • 原文地址:https://www.cnblogs.com/baby123/p/10899244.html
Copyright © 2011-2022 走看看