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.
SameTree
简单的一个递归实现。
自己在VS2013上运行正确,但是结果
#include<iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode*newNode(int elem)
{
TreeNode*cur = new TreeNode(elem);
return cur;
}
TreeNode*insert_node(TreeNode*head, int elem)
{
if (head == NULL)return newNode(elem);
else if (elem <= head->val)
head->left = insert_node(head->left, elem);
else
head->right = insert_node(head->right, elem);
return head;
}
void PrintTree(TreeNode*head)
{
if (head == NULL)return;
PrintTree(head->left);
cout << head->val;
PrintTree(head->right);
cout << endl;
}
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
if (p == NULL && q == NULL) return true;
else if (p == NULL || q == NULL)return false;
else
return p->val == q->val &&isSameTree(p->left, q->left) && isSameTree(p->right, p->right);
}
};
int main()
{
int A[] = { 12, -60 };
int B[] = {12,72};
TreeNode*a = NULL;
TreeNode*b = NULL;
for (int i = 0; i < 2; i++)
{
a = insert_node(a, A[i]);
b = insert_node(b, B[i]);
}
cout << "a.......\n";
PrintTree(a);
cout << "b.......\n";
PrintTree(b);
Solution s;
if (s.isSameTree(a, b))
cout << "ok";
else
cout << "wrong";
}
Input: | {12,#,-60}, {12,#,72} |
Output: | true |
Expected: | false |
那里有不对的地方,请赐教。