二叉树的建立以及两个二叉树比较异同

来源:互联网 发布:淘宝手机分享有礼活动 编辑:程序博客网 时间:2024/06/07 01:08

关于二叉树的构造函数:

在主调函数中并不声明号指针所指向的空间,在被调函数中可以直接使用。

//二叉树的定义,以及比较#include <iostream>using namespace std;//二叉树的二叉链表的节点定义typedef struct BiTNode{int data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//创建二叉树//若该节点的数据为空,则输入“-1”BiTree CreatBiTree(<span style="color:#ff6666;">BiTree T</span>){cout<<"请输入int型的数据,以-1作为空节点:"<<endl;int data;cin>>data;if (-1==data){T=NULL;}else{T=new BiTNode;//很关键的地方,先传进来指针,但没有指向的响应的空间,现在开辟指向空间if (NULL==T){cout<<"Failed to malloc a new BiTNode!"<<endl;}    T->data=data;CreatBiTree(T->lchild);CreatBiTree(T->rchild);}return T;}//比较两个二叉树的异同,相同为ture,不同为falsebool CmpBiTree(BiTree &T1,BiTree &T2){//先判断,T1,T2是否为空if (NULL==T1&&NULL==T2){return true;}if (NULL==T1||NULL==T2){return false;}if (T1->data!=T2->data){return false;}//即认为左右子树交换后,认为同一个树bool p=CmpBiTree(T1->lchild,T2->lchild);bool q=CmpBiTree(T1->rchild,T2->rchild);bool r=CmpBiTree(T1->lchild,T2->rchild);bool s=CmpBiTree(T1->rchild,T2->lchild);bool result=(p&&q)||(r&&s);</span>return result;}int main(){//建立两个二叉树T1,T2cout<<"请输入T1的数据:"<<endl;BiTree T1=CreatBiTree(BiTree(NULL));//很重要的点//BiTree T2=(BiTree)malloc(sizeof(BiTNode));cout<<"请输入T2的数据"<<endl;BiTree T2=CreatBiTree(BiTree(NULL));bool p=CmpBiTree(T1,T2);cout<<"两树是否相等:"<<p<<endl;return 0;}

或者以以下方式亦可:

关于二叉树的构造函数:

在主调函数中声明号指针所指向的空间,在被调函数中可以直接使用。

//二叉树的定义,以及比较#include <iostream>using namespace std;//二叉树的二叉链表的节点定义typedef struct BiTNode{int data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//创建二叉树//若该节点的数据为空,则输入“-1”BiTree CreatBiTree(BiTree T){cout<<"请输入int型的数据,以-1作为空节点:"<<endl;int data;cin>>data;if (-1==data){T=NULL;}else{if (NULL==T){cout<<"Failed to malloc a new BiTNode!"<<endl;}    T->data=data;T->lchild=(BiTree)malloc(sizeof(BiTNode));T->rchild=(BiTree)malloc(sizeof(BiTNode));CreatBiTree(T->lchild);CreatBiTree(T->rchild);}return T;}//比较两个二叉树的异同,相同为ture,不同为falsebool CmpBiTree(BiTree &T1,BiTree &T2){//先判断,T1,T2是否为空if (NULL==T1&&NULL==T2){return true;}if (NULL==T1||NULL==T2){return false;}if (T1->data!=T2->data){return false;}//即认为左右子树交换后,认为同一个树bool p=CmpBiTree(T1->lchild,T2->lchild);bool q=CmpBiTree(T1->rchild,T2->rchild);bool r=CmpBiTree(T1->lchild,T2->rchild);bool s=CmpBiTree(T1->rchild,T2->lchild);bool result=(p&&q)||(r&&s);return result;}int main(){//建立两个二叉树T1,T2cout<<"请输入T1的数据:"<<endl;    BiTree T1=(BiTree)malloc(sizeof(BiTNode));T1=CreatBiTree(T1);cout<<"请输入T2的数据"<<endl;BiTree T2=(BiTree)malloc(sizeof(BiTNode));T2=CreatBiTree(T2);bool p=CmpBiTree(T1,T2);cout<<"两树是否相等:"<<p<<endl;return 0;}


0 0
原创粉丝点击