算法练习之相同的树,对称二叉树详解编程语言

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; 
    } 
}

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/20358.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论