/*
* LeetCode--Same Tree
* date 2014/5/13
* state AC
*/
#include <iostream>
using namespace std;
/**
* Definition for binary tree
*/
struct TreeNode
{
char 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->val==q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right))
return true;
else return false;
*/
//return isSameTree(p->left,q->left);
//return isSameTree(p->right,q->right);
if(p==NULL && q==NULL)return true;//两者都是NULL
if(p!=NULL && q!=NULL && p->val==q->val//两者结点数据相等
&& isSameTree(p->left,q->left) //且左子树相同
&& isSameTree(p->right,q->right))//且右子树相同
return true;
else return false;
}
};
//前序遍历建树
void createBinTree(TreeNode*& T)//指针引用
{
//TreeNode* root;
char temp;
cin>>temp;
if(temp=='#')T=NULL;
else
{
//if()
T=new TreeNode(temp);
if(!T)return;
createBinTree(T->left);
createBinTree(T->right);
}
}
//前序遍历树
void preOrder(TreeNode* root)
{
if(root!=NULL)
{
cout<<root->val<<" ";
preOrder(root->left);
preOrder(root->right);
}
}
/*
void CreateBiTree(TreeNode*& t)//必须用&
{
char ch;
cin>>ch;
if(ch=='#')
t=NULL;
else
{
t=new TreeNode(ch);
if(!t)
return;
//t->val=ch;
CreateBiTree(t->left);
CreateBiTree(t->right);
}
}
//先序遍历
void PreOrderTraverse(TreeNode* t)
{
if(t)
{
cout<<t->val<<" ";
PreOrderTraverse(t->left);
PreOrderTraverse(t->right);
}
}
*/
TreeNode* create()
{
char ch;
cin>>ch;
TreeNode* root;
if(ch=='#')
return NULL;
else
{
root=new TreeNode(ch);
root->left=create();
root->right=create();
return root;
}
}
int main()
{
//cout << "Hello world!" << endl;
TreeNode* t=NULL;
//createBinTree(t);
t=create();
preOrder(t);
//CreateBiTree(t);
return 0;
}
创建二叉树
最新推荐文章于 2015-03-26 20:40:42 发布