题目:http://oj.leetcode.com/problems/same-tree/
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
题目翻译:
给定两个二叉树,编写一个函数来检查它们是否相等。
如果两个二叉树具有相同的结构,并且所有节点具有相同的值,则被认为是相等的。
1 如果两个节点都为空,则相等。
2 如果仅有一个节点为空,则不等。
3 如果节点的值相等,并且左子树和右子树分别相等,则返回相等,否则返回不等。
C++实现:/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
if(!p && !q)
{
return true;
}
if(!p || !q)
{
return false;
}
return p->val == q->val && isSameTree(p->left, q->left)
&& isSameTree(p->right, q->right);
}
};
Java实现:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
} else if (p == null || q == null) {
return false;
}
return p.val == q.val && isSameTree(p.left, q.left)
&& isSameTree(p.right, q.right);
}
}
Python实现:
# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @param p, a tree node
# @param q, a tree node
# @return a boolean
def isSameTree(self, p, q):
if p == None and q == None:
return True
elif p == None or q == None:
return False
return p.val == q.val and self.isSameTree(p.left, q.left) \
and self.isSameTree(p.right, q.right)
感谢阅读,欢迎评论!