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