基于二叉链表的树结构相等的判断
设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,按此方法创建两棵二叉树,然后编写递归算法判断这两棵树是否相等。
输入
多组数据,每组数据有两行。每行为一个二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。
输出
每组数据输出一行。若两个二叉树相等输出“YES”,否则输出“NO”。
输入样例 1
abcd00e00f00ig00h00 abcd00e00f00ig00h00 abd00e00cf00g00 abd00e00cf00h00 0
输出样例 1
YES NO
#include<iostream>
using namespace std;typedef struct BiTNode{int data; //结点数据域 struct BiTNode *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree; //先序遍历创建二叉树
void CreatBiTree(BiTree &T){ //按先序次序输入二叉树中结点的值 创建二叉链表表示的二叉树 char ch;cin>>ch;if(ch=='0') T = NULL; //递归结束 空树 else{ //递归创建二叉树 T = new BiTNode; //生成根节点T->data = ch; //根结点数据域置ch CreatBiTree(T->lchild); //递归创建左子树 CreatBiTree(T->rchild); //递归创建右子树 }
}
void CreatBiTree(BiTree &T,char ch){ //按先序次序输入二叉树中结点的值 创建二叉链表表示的二叉树 if(ch=='0') T = NULL; //递归结束 空树 else{ //递归创建二叉树 T = new BiTNode; //生成根节点T->data = ch; //根结点数据域置ch CreatBiTree(T->lchild); //递归创建左子树 CreatBiTree(T->rchild); //递归创建右子树 }
} //int CmpTree(BiTree T1,BiTree T2){//判断两个二叉树是否相等
// int left,right;
// if(T1==NULL&&T2==NULL)
// return 1; //都是NULL 不等
// else if(T1==NULL||T2==NULL)
// return 0; //只有一个为NULL 不等
// if(T1->data!=T2->data)
// return 0; //根节点不等 直接返回不等 否则递归
// left = right = 0;
// left = CmpTree(T1->lchild,T2->lchild);
// right = CmpTree(T1->rchild,T2->rchild);
// return left&&right;
//}int CmpTree(BiTree T1,BiTree T2){if(T1&&T2){if(T1->data!=T2->data){//cout<<"NO"<<endl; return 0;}else{CmpTree(T1->lchild,T2->lchild);CmpTree(T1->rchild,T2->rchild);} }
} int main()
{ char ch; while(cin>>ch&&ch!='0'){BiTree T1,T2;CreatBiTree(T1,ch);CreatBiTree(T2);if (CmpTree(T1,T2)!=0) cout<<"YES"<<endl; else cout<<"NO"<<endl;}return 0;}
基于二叉链表的树结构相等的判断相关推荐
- 3002基于二叉链表的树结构相等的判断(附WA的可能情况)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,按此方法创建两棵二叉树,然后编写递归算法判断这两棵树是否相等. 输入 多组数据,每组数据有两行.每行为一个二叉树的先序序列(序 ...
- 3006基于二叉链表的二叉树最长路径的求解(附思路)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为 ...
- 3010基于二叉链表的二叉树高度的计算(附思路,WA的一种可能情况及代码)
基于二叉链表的二叉树高度的计算 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为 ...
- 3010基于二叉链表的二叉树高度的计算
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...
- 3003基于二叉链表的二叉树左右子树的交换
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为空) ...
- 【数据结构】基于二叉链表的二叉树结点个数的统计
基于二叉链表的二叉树结点个数的统计 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数 ...
- 基于二叉链表的二叉树高度的计算
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...
- 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)
以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...
- 3004基于二叉链表的二叉树的双序遍历(附题意解释)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法实现该二叉树的双序遍历(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次 ...
- 3009基于二叉链表的二叉树结点个数的统计(附思路)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元 ...
最新文章
- Mybatis复习笔记:1
- 密码危机:深度学习正在加速密码破解!
- Win10 KB4541335 部分用户遭遇系统蓝屏/性能下降问题
- html div转换图片
- 【luogu】 P1880 石子合并
- 互联网计算机技术方面的入门书籍有哪些推荐?
- html5实现拖拽上传图片,JS HTML5拖拽上传图片预览
- 电子邮件传输协议原理简介
- SkeyeLive开源流媒体同屏直播软件源码功能框架解析
- 中国汉字一、二级字库的汉字与unicode编码(十六进制)对照表(收藏)
- 数据备份与数据容灾全解析
- 从认知负荷理论看语音交互设计
- java中求平均数怎么写,java求平均数函数
- 「干货」从动态的角度分析DDR的时序结构
- Android组件化开发实践和案例分享 1
- 国际贸易术语解释通则(EXW 工厂交货…(指定地点))
- 408 の 操作系统
- Go mgo+Mongodb连接失败问题
- 零售行业如何利用数据支撑全业务体系,8大场景1个案例讲清楚
- 学习enscape动画制作渲染之前,这些技巧必看
热门文章
- python开发ios程序_使用Python开发iOS程序
- linux上机考试题(Linux基础)
- 2013年9月份第2周51Aspx源码发布详情
- 疫情下的思考:全球疫情带来的危机与机遇
- 《趣谈网络协议》课程学习笔记
- java实现文字跑马灯_跑马灯的问题
- unity 代码边缘发光_unity游戏物体边缘发光高亮突出显示系统插件Highlighting System 5.0...
- 破解还原卡的方法总结
- Devexpress 10.1.6 源代码重新编译成功(DXperience 10.1.6 重新编译)附所有需要用到的资源下载地址 (收藏)...
- Qt实现界面滑动切换效果