二叉树的建立以及两个二叉树比较异同
来源:互联网 发布:淘宝手机分享有礼活动 编辑:程序博客网 时间: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
- 二叉树的建立以及两个二叉树比较异同
- 二叉树的建立,以及递归前中后序遍历二叉树
- 递归实现两个二叉树的比较
- 二叉树的建立以及相关操作
- C++二叉树的建立以及遍历
- 二叉树的递归创建,以及二叉查找树查找的建立 和遍历查找的比较
- 二叉树的建立
- 二叉树的建立
- 二叉树的建立
- 二叉树的建立
- 二叉树的建立
- 二叉树的建立
- 二叉树的建立
- 二叉树的建立
- 二叉树的建立
- 【二叉树的建立】
- 二叉树的建立
- 二叉树的建立
- 兼容解决 IE 、火狐、谷歌浏览器中 Iframe框架的页面缓存的方法
- 黑马程序员_socket
- 黑马程序员20——OC之Fundation(NSValue)
- 快速排序
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- 二叉树的建立以及两个二叉树比较异同
- 关于MyEclipse如何将那些黄线去掉
- 【axure手机原型】Axure实现iPhone推动切换效果
- 最长公共子串问题
- poj 2349 Arctic Network
- Android - 文件读写操作 总结
- Kafka 简介
- linux网卡数据流 发送与接收
- Android持久化保存cookie