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;
        }
    }
  • 相关阅读:
    linux下解压命令大全
    关于伸展树的详细解析(E文)
    数据结构与算法汇总
    Linux下的压缩解压缩命令详解
    Linux Netcat 命令——网络工具中的瑞士军刀
    gethostbyname
    Html 转化为 PDF
    返回一个表
    sqlserver创建函数
    取不同类别的第一条数据
  • 原文地址:https://www.cnblogs.com/baby123/p/10899244.html
Copyright © 2011-2022 走看看